MySQL 给出语法错误

MySQL 给出语法错误

我的 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

相关内容