#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']."'";
Попробуйте. Вы неправильно добавляете кавычки и забыли выбрать столбцы, которые хотите запросить.