2013-03-06 2 views
0

Когда я жёстко мой запрос, как это, запрос возвращает правильный результат:MySQL запросов не работает с PHP переменных

$data = mysql_query("SELECT * FROM $table_name WHERE post_ID = '1'") or 
       die(mysql_error()); 

Но когда я использую переменную PHP, как это, запрос не возвращает никаких результатов:

$data = mysql_query("SELECT * FROM $table_name WHERE post_ID = '$ID'") or 
       die(mysql_error()); 

Я инициализируется переменная выше, следующим образом:

$ID = $_POST[ID]; 

И переменная работает каждый раз с этим утверждением:

$sql = "INSERT INTO $table_name (post_ID, user_name, comments) 
    VALUES ('$ID','$name', '$comment')"; 

Так что я не понимаю, почему переменная будет вставить правильно в моей SQL таблицы с предыдущим утверждением, но не работает с запросом. Я использую тип данных varchar в таблице sql для поля post_ID.

+2

[** Пожалуйста, не используйте '' * mysql_ функции в новом коде **] (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (http://j.mp/XqV7Lp). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://j.mp/PoWehJ). –

+1

это должно быть '$ ID = $ _POST ['ID'];' no ..? – MatRt

+0

$ _POST [ID]; все равно предположил бы, что строка, предоставляющая идентификатор, не была определена как константа. (обратите внимание, что это вызовет ошибку уровня WARNING). Поэтому необязательно, но вы можете быть верны. – Mechzeit

ответ

0

Попробуйте

$ID = $_POST['ID']; 
$data = mysql_query("SELECT * FROM ".$table_name." WHERE post_ID = '".$ID."'") or 
     die(mysql_error()); 
+0

, который, похоже, не работает – user2138541

+0

вы можете убедиться, что ваш $ _POST ['ID'] не является нулевым или возвращает допустимое значение? –

+0

$ _POST [ID] возвращает правильное значение в таблицу sql – user2138541

0

Пожалуйста, вы можете попробовать напрямую, а котировки

$data = mysql_query("SELECT * FROM $table_name WHERE post_ID =$ID") or 
       die(mysql_error()); 
+0

вызывает ошибку: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' в строке 1 – user2138541

+1

, пожалуйста, распечатайте значение $ ID, есть ли в нем какое-либо значение или нет. –

+0

ничего не печатает, но вводится правильное значение в мой sql-стол. Так что это не имеет никакого смысла. – user2138541

0

Php анализатор не разобрать переменную, если вы поместите его в «». Так попробуйте удалить одиночные кавычки, то есть использовать только $ ID вместо '$ ID'

$data = mysql_query("SELECT * FROM $table_name WHERE post_ID = $ID") or die(mysql_error()); 
+0

вызывает ошибку – user2138541

+0

У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' в строке 1 – user2138541

+0

@Mihir В «...» $ ID »строка разделена двойными кавычками и выполняется замещение переменных. Одиночные кавычки являются лишь частью строки и не препятствуют подстановке переменных (как в «...» $ ID »') –

0

попробуйте использовать этот

<?php 
$query = "SELECT * FROM $table_name WHERE post_ID = "$ID; 
$data = mysql_query($query); 
?> 

хотя, вы должны использовать MySQLi вместо функций MySQL.

Счастливое кодирование!

0

Убедитесь, что $_POST['ID'] настроен первым.

$ID = isset($_POST['ID']) ? $_POST['ID'] : <some_values>; #for debugging purpose 

Затем, сделайте следующее:

$data = mysql_query("SELECT * FROM $table_name WHERE post_ID = '".$ID."'") or 
     die(mysql_error()); 
+0

переменные не задаются ... теперь я понятия не имею, как заполняется моя таблица sql. – user2138541

+0

Пытается проверить входные значения внутри вашей HTML-формы. Возможно, вы пропустили эту часть. – foxns7

1

Вот некоторые проблемы с кодом. Поскольку ваша переменная PHP не работает в MySQL-запросе. Поэтому вам нужно передать переменную в нее. С помощью одной цитаты вы можете передать ее так. И

$ data = mysql_query ("SELECT * FROM '$ table_name' WHERE post_ID = '1'") или die (mysql_error());

Благодаря

Смежные вопросы