#php #sql #postgresql #where
#php #sql #postgresql #где
Вопрос:
Я запускаю некоторый PHP-код, в котором я пытаюсь найти строки с указанным параметром. Я успешно подключился к базе данных, однако столкнулся с одной проблемой.
Когда я запускаю этот код:
$SQL = "SELECT * FROM schema.table";
$result = pg_exec($dbconn, $SQL);
while ($row = pg_fetch_array($result) {
echo "data: " .$row . "<br/>n";
Я получаю распечатанный список массивов, показывающий, что мне удалось извлечь эти данные из базы данных и распечатать их на странице веб-сайта.
Однако мне нужно отфильтровать данные, в которых мне нужны только строки с определенным идентификатором. Когда я пытаюсь выполнить этот запрос:
$SQL = "SELECT * FROM schema.table WHERE 'ID' = '123'";
pg_numrows($result)
равно 0, когда есть четыре строки с идентификатором 123, и нечего показывать, и нет массива, и я понятия не имею, почему добавление оператора ‘where’ что-то меняет. Что случилось с данными, почему их фильтрация приводит к тому, что они больше не работают?
РЕШАЕМАЯ: выяснил ответ для всех, кто сталкивается с той же проблемой.
$SQL = "SELECT * FROM schema.table WHERE "ID" = '123'";
Это синтаксис, который должен использоваться для столбцов, изменяющих символы. Спасибо всем, кто заставил меня понять, что я запускал забавный код с неправильными кавычками.
Комментарии:
1. Почему ваш идентификатор окружен символом «, разве он не должен быть 123, а не «123»?
2. Обратные знаки, одинарные кавычки и медведи, о боже!
3. Строка ‘ID’ никогда не равна строке ‘123’.
4. Если я не использую одинарные кавычки для идентификатора, я получаю эту ошибку: ошибка запроса: ОШИБКА: столбец «id» не существует. И когда я убираю одинарные кавычки из 123, я получаю: Ошибка запроса: ОШИБКА: недопустимый синтаксис ввода для целого числа
5. Вы могли бы просто написать:
$SQL = "SELECT * FROM schema.table WHERE ID = '123'";
Нет необходимости заключать имя столбца в кавычки. как написал @user3763227 в своем последнем комментарии.
Ответ №1:
используйте так..
$SQL = "SELECT * FROM schema.table WHERE ID = 123";
Никогда не используйте одинарные кавычки для имен столбцов и никогда не используйте одинарные кавычки для типа int..
Комментарии:
1. Вы должны объяснить, что не так с исходным синтаксисом, чтобы OP понял, в чем проблема.
2. Если я не использую одинарные кавычки для идентификатора, я получаю эту ошибку: ошибка запроса: ОШИБКА: столбец «id» не существует. И когда я убираю одинарные кавычки из 123, я получаю: Ошибка запроса: ОШИБКА: недопустимый синтаксис ввода для целого числа
3. пожалуйста, укажите структуру вашей таблицы, т.Е. Тип каждого столбца с его именем
4. @user3756998 тогда попробуйте это ..$SQL = «SELECT * FROM schema.table WHERE ID = ‘123’»; используйте одинарные кавычки только для 123 .. поскольку вы используете varchar для ID