Ошибка MySQL: «У вас ошибка в синтаксисе SQL» - PullRequest
2 голосов
/ 14 декабря 2011

Этот код ниже дает мне эту ошибку:

"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 ''' where id = '000'' at line 1"

Я не понимаю, проблема здесь

<?php
include(".conf.php");
$con = mysql_connect($conf['db_hostname'], $conf['db_username'], $conf['db_password']) or die (mysql_error());
$db = mysql_select_db("aTable", $con);
$pr = $_GET['aThing'];
$pr = addslashes(htmlentities($prof));
$info_array = mysql_query("SELECT * FROM '$db' where id = '$pr'", $con) or die(mysql_error()); 

while($row = mysql_fetch_array( $info_array )) {
    echo $row['aThing'];
    echo "</br>";
    echo $row['aThing'];
    echo "</br>";
    echo $row['aThing'];
    echo "</br>";
    echo $row['aThing'];
};
?>

Спасибо за вашу помощь.

Ответы [ 4 ]

3 голосов
/ 14 декабря 2011

Вы должны поместить имя таблицы в FROM: SELECT * FROM aTable WHERE ..... Также вы не можете экранировать переменную, которая приходит от пользователя.Вам понадобится что-то вроде:
mysql_query("SELECT * FROM aTable where id = '".mysql_real_escape_string($pr)."'", $con) or die(mysql_error());

2 голосов
/ 14 декабря 2011

Я почти уверен, что в нем нет ошибок, за исключением фатальная ошибка, убивающая его.

Я бы сказал, что вы быстрее найдете решение, если поверите MySQL, когда он говорит, что есть проблема.

Перечитывание сообщения об ошибке:

У вас ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного использования синтаксиса около '' 'где id =' 000 '' в строке 1

Я бы поставил под сомнение имя таблицы и кавычки вокруг идентификатора. Если это целочисленный столбец, я ожидаю увидеть число без кавычек.

2 голосов
/ 14 декабря 2011

Функция mysql_select_db возвращает либо TRUE, либо FALSE

Вместо этого попробуйте:

$info_array = mysql_query("SELECT * FROM aTable where id = '$pr'", $con) or die(mysql_error()); 

Или, возможно:

$dbtable = "aTable";
$info_array = mysql_query("SELECT * FROM $dbtable where id = '$pr'", $con) or die(mysql_error()); 
1 голос
/ 14 декабря 2011

Если я правильно помню, mysql_select_db возвращает true или false. Не возвращает имя базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...