pdo-запрос не выполняется при передаче переменной в качестве запроса
У меня есть команда pdo, как это $sql = $pdoObj->execute($query)
но это не работает, 0 результат возвращается. Я повторил $query
переменная перед вызовом execute()
а затем вставил его в execute()
и код успешно запустился. Я не могу понять, в чем здесь проблема, поскольку я сделал это в других частях моего кода без проблем. Вот несколько примеров запросов:
SELECT s.id, s.marca, s.colore, s.prezzo, i.id_scarpa, i.taglia FROM scarpe AS s INNER JOIN info_scarpe AS i ON i.id_scarpa = s.id WHERE 1 = 1 AND taglia IN ('40','41','42') AND colore IN ('rosso', 'nero')
SELECT * FROM scarpe WHERE 1=1
SELECT * FROM scarpe WHERE 1=1 AND marca IN ('adidas','nike')
Все они представляют собой динамически генерируемые запросы, основанные на $_GET
переменная.
РЕДАКТИРОВАТЬ: Конечно
if ( isset($_GET) ) {
if ( isset($_GET['taglia']) ) {
$query = "
SELECT
s.id, s.marca, s.colore, s.prezzo, i.id_scarpa, i.taglia
FROM
scarpe AS s
INNER JOIN
info_scarpe AS i
ON i.id_scarpa = s.id
WHERE
1 = 1
";
foreach ( $_GET as $index => $val ) {
$a = explode(',', $val);
$in = "'" . implode("','", $a) . "'";
$query .= ' AND '.$index.' IN ('.$in.')';
}
} else {
$query = " SELECT * FROM scarpe WHERE 1=1";
foreach ( $_GET as $index => $val ) {
$a = explode(',', $val);
$in = "'" . implode("','", $a) . "'";
$query .= ' AND '.$index.' IN ('.$in.')';
}
}
echo 'data loaded';
} else {
$query = " SELECT * FROM scarpe ORDER BY id DESC ";
}
EDIT2:
я использую query()
и не execute()
но все равно не работает
1 ответ
Решение
Аргументы за execute
должен быть массив с параметрами запроса. Вы хотите использовать либо
$result = $pdoObj->query($query);
ИЛИ ЖЕ
$stmt = $pdoObj->prepare($query);
$stmt->execute();