1

У меня проблема с моим запросом 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); так что это не будет отображать предупреждение, но это все еще предупреждение, и если кто-то достаточно любезен, чтобы помочь мне решить его, пожалуйста, сделайте. Еще раз спасибо.

2 ответа2

1

Слово от (название вашего столбца) является зарезервированным словом. Вы должны поставить галочки вокруг этого, как это `from` . Вы также захотите поместить одинарные кавычки вокруг переменных в строке SQL.

1

Когда вы используете зарезервированные слова для имен столбцов в MySQL, используйте обратную косую черту, т. Е. `Для выхода.

SELECT * FROM messages WHERE from=`8` AND to=`1` ORDER BY time ASC LIMIT 50

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .