我的 MySQL 查询有问题。我收到一个无法修复的错误,仍然需要一些帮助。这是我的 PHP 脚本 (show_messages.php) 中的代码:
<?php
include_once 'config.php';
$username = @$_GET['user'];
$password = @$_GET['password'];
$message_from = @$_GET['from'];
$message_to = @$_GET['to'];
if(($login = login($username, $password)) != 1) {
echo $login; // return the value of the error
exit;
} else {
$mysql = mysql_query("SELECT * FROM messages WHERE from LIKE $message_from AND to LIKE $message_to ORDER BY time ASC LIMIT 50");
$rows = @mysql_numrows($mysql);
echo 'MySQL Error: ' . mysql_error().'<br/>';
if($rows > 0) {
$i = 0;
while($i < $rows) {
$result_content = mysql_result($mysql, $i, 'content');
$result_from = mysql_result($mysql, $i, 'from');
echo $result_from.'<br/>'.$result_content.'<br/><br/>';
$i++;
}
} else {
echo 'No messages.';
}
}
?>
这是我收到的错误:
MySQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from LIKE 8 AND to LIKE 1 ORDER BY time ASC LIMIT 50' at line 1
这是我的数据库结构: 我的数据库结构图
我不知道该怎么办。我正在开发一款应用,如果不先解决这个问题,我就无法继续下去。提前谢谢大家。
(如果有人知道如何使其他代码变得更好,请随时纠正我,我不是专业人士,我只有 15 岁:P)
编辑2: 如果有人可以在另一件事上帮助我,我会收到以下警告:
$rows = mysql_numrows($mysql);
我必须将其更改为$rows = @mysql_numrows($mysql);
不显示警告,但它仍然是一个警告,如果有人愿意帮助我解决它,请帮忙。再次感谢。
答案1
单词 from(您的列名)是保留字。您需要像这样在其周围加上反引号`from`
。您还需要在 SQL 字符串中的变量周围加上单引号。
答案2
当你使用保留字对于 MySQL 中的列名,使用反引号(即 `)来转义。
SELECT * FROM messages WHERE from=`8` AND to=`1` ORDER BY time ASC LIMIT 50