2013-05-06 3 views
0

У меня есть простой запрос mysqli, который не запускается, когда я устанавливаю условие where на строку, такую ​​как приведенный ниже код (option = 'title'), однако, если вместо этого я использовал целое число (id = 1) это работает!Ошибка MySQLi с простым предложением WHERE инструкция SELECT

вот код:

$db_name = "gp"; 
$db_username = "root"; 
$db_pass = ""; 
$db_host = "localhost"; 
$mysqli = new mysqli($db_host, $db_username, $db_pass, $db_name); 
mysqli_report(MYSQLI_REPORT_ERROR); 

if($sql_title = $mysqli->query("SELECT value FROM options WHERE option='title' LIMIT 1")){ 
    if($sql_title->num_rows > 0){ 
     $row_title = $sql_title->fetch_object(); 
     $title = $row_title->value; 
     echo $title; 
    } 
    else 
     echo "No Title!"; 
} 
else 
    echo $mysqli->error; 

$mysqli->close(); 

моя структура базы данных

-------------------------- 
| id | option | value | 
-------------------------- 
| 1 | title | hello | 
| 2 | image | logo.jpg | 

ошибка КРИК: подавление ошибки игнорируется Внимание (!): Mysqli :: запроса(): (42000/1064): У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'option =' title 'LIMIT 1' в строке 1 в C: \ wamp \ www \ test.php в строке 9

ответ

0

option зарезервированным слово в MySQL, вы должны положить его в обратных кавычках.

if($sql_title = $mysqli->query("SELECT value FROM options WHERE `option`='title' LIMIT 1")){ 
+0

Спасибо, что решил. – sandrows

0

option является keyword in MySQL. Если вы хотите использовать его в качестве идентификатора столбца, убедитесь, что всегда заключать его в обратных кавычках:

SELECT value FROM options WHERE `option`='title' LIMIT 1 
Смежные вопросы