У меня есть это:
$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") }