#php #sql #pdo
#php #sql #pdo
Вопрос:
У меня есть следующий запрос с использованием PDO php
$STH = $DBH->query('
SELECT COUNT(*) AS hits FROM table WHERE column = "' .$variable. '"
');
Таблица пуста, будет ли это как-то связано с ошибкой?
Имеет ли это какое-то отношение к hits
равному 0?
Я выбираю данные из базы данных MSSQL.
Комментарии:
1. Можете ли вы опубликовать свой полный соответствующий код? Где вы инициализируете
$DBH
объект класса ?2.
$DBH
не является допустимым объектом для вызоваquery
метода. Не имеет значения, возвращает запрос 0 или нет.3. Хорошо, я решил это, я заменил все
'
на"
и наоборот. Я думаю, что это проблема sql. Dangit теперь я должен сделать это для всех подобных экземпляров. Я использовал'
, чтобы у меня могли быть входные данные, содержащие символ'
, но мне просто нужно найти другой способ сделать это 😉
Ответ №1:
Это просто означает, что $DBH
не является объектом, поэтому он не подключен, и в результате вы получаете 0.
Вы должны сначала создать $DBH
объект, а затем запустить query
метод
Комментарии:
1. У меня есть файл с именем ‘db_connect.php ‘ к которому я привязываю все свои страницы. Объект $ DBH был классифицирован там. Я знаю, что это работает, потому что другие sql-запросы и подготовленные операторы работают нормально.
2. Попробуйте добавить
var_dump($DBH);
непосредственно перед запуском запроса и покажите нам результат.3. Я получаю следующее: object (PDO)#1 (0) { }
4. Вы действительно уверены, что проблема в этой строке? Можете ли вы выполнить любой другой запрос, который вы ранее запускали в своем приложении до или после этого запроса? Вы уверены, что используете везде
$DBH
заглавные буквы?5. да, если я удалю приведенный выше код, другие запросы будут выполняться нормально
Ответ №2:
Проблема заключается в использовании одинарных и двойных кавычек:
$STH = $DBH->query("
SELECT COUNT(*) FROM table WHERE column = '" .$variable. "'
");
Я использовал одинарные кавычки '
, чтобы входные данные, включающие одинарные кавычки, оставались действительными. Это не работает с командами MSSQL.