Ошибка синтаксиса SQL-запроса в PHP

#php #mysql

#php #mysql

Вопрос:

Я пытаюсь выполнить простой запрос в моей базе данных MySQL и отобразить результат. Я получаю следующую ошибку:

Ошибка синтаксического анализа: синтаксическая ошибка «неожиданно» (T_ENCAPSED_AND_WHITESPACE), ожидающий идентификатор (T_STRING) или переменную (T_VARIABLE) или число (T_NUM_STRING)

Это код для моего запроса:

 $result = mysqli_query($connection, "SELECT FROM table_name WHERE value='$_POST["searchname"]'";
echo $result;
  

Я предполагаю, что это простая синтаксическая ошибка в инструкции SQL, но я просто ее не вижу.
Спасибо за помощь!

Комментарии:

1. Взгляните на подсветку синтаксиса. Ваша строка заканчивается перед searchname , а затем PHP пытается разобраться в следующем материале, но терпит неудачу. Поскольку вы уже используете MySQLi, используйте подготовленные инструкции вместо того, что вы делаете сейчас. Тогда у вас никогда больше не возникнет подобных проблем.

2. Кроме того, SELECT FROM произойдет сбой. Вам действительно нужно что-то выбрать.

Ответ №1:

Вам нужно убедиться, что вы правильно используете кавычки при построении строки:

 $result = mysqli_query($connection, "SELECT * FROM table_name WHERE value='".$_POST["searchname"]."'";
  

Также я надеюсь, вы знаете, что в любом случае этот тип инструкций уязвим для sql-инъекций. В идеале вы должны использовать подготовленные инструкции или какую-либо проверку или экранирование входных данных.

Комментарии:

1. Спасибо, что указали на это. Я не думал пытаться объединить значение $ _POST [«searchname»] в строку запроса.

Ответ №2:

Вы не указали столбец в своем запросе select

SELECT FROM.....

должно быть

SELECT * FROM....

При использовании запроса select лучше всего выбирать только нужные вам столбцы. Также защитите свой SQL от XSS. Пример:

 $searchname = mysqli_real_escape_string($connection, $_POST['searchname']);
$result = mysqli_query($connection, "SELECT col1, col2, col3 FROM table_name WHERE col2='$searchname'";
  

Ответ №3:

$result = mysqli_query($connection, "SELECT * FROM table_name WHERE value='".$_POST['searchname']."'";

Попробуйте. Вы неправильно добавляете кавычки и забыли выбрать столбцы, которые хотите запросить.