переменная php в sql-запросе

У меня есть это:

$result = mysql_query("SELECT * FROM animals WHERE hand= " .$_SESSION['SESS_HAND']. "); 

Но всегда показывает «Ошибка анализа: ошибка синтаксического анализа, ожидающая T_STRING' or T_VARIABLE» или «T_NUM_STRING»,

Всегда избегайте строковых переменных:

 $result = mysql_query("SELECT * FROM animals WHERE hand= '" . mysql_real_escape_string($_SESSION['SESS_HAND']). "'"); 

Причина, по которой ваш запрос не работает, заключается в том, что значение вашего WHERE не равно единичным кавычкам.

EDIT: Квентин тоже прав, вы не закрыли кавычки в последней скобке;).

Это заставило бы запрос работать:

 $result = mysql_query("SELECT * FROM animals WHERE hand= '" .$_SESSION['SESS_HAND']. "'"); 

Но, как указывает a1ex07, вы всегда должны избегать переменных! Выше запрос уязвим для инъекций MySQL. В нижнем примере показан правильный путь, экранируя переменную и, на мой взгляд, немного лучше читаемый код;).

 $query = "SELECT * FROM `animals` WHERE `hand` = '" .mysql_real_escape_string($_SESSION['SESS_HAND']). "'"; mysql_query($query); 

пытаться:

 $result = "SELECT * FROM animals WHERE hand= " . $_SESSION['SESS_HAND']; mysql_query($result); 

Кроме того, делая это, вы можете отлаживать свой запрос и точно видеть, что он делает в SQL, написав:

 echo $result; 

Он дает это сообщение об ошибке, потому что вы никогда не завершаете строку, которую вы пытаетесь добавить после данных сеанса: ");

Однако не создавайте SQL-запросы, выбирая строки. Используйте подготовленные заявления и параметризованные запросы .

Проблема:

 $result = mysql_query("SELECT * FROM animals WHERE hand= " .$_SESSION['SESS_HAND']. "); 

Решение:

 if (!$sessHand = mysql_real_escape_string($_SESSION['SESS_HAND'])) { echo "There was a error: " . mysql_error(); } else { $result = mysql_query("SELECT * FROM animals WHERE hand=$sessHand") }