Задать вопрос
@rennameduser_3432

Ошибка в запросе?

$sql_part .= "AND price > {$_GET['priceMin']} AND price < {$_GET['priceMan']}";


Текст ошибки: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1

что не так?

UPD:
Весь запрос
$sql_part .= "AND price > {$_GET['priceMin']} AND price < {$_GET['priceMan']}";

$sql_part = "AND id IN (SELECT product_id FROM attribute_product WHERE attr_id IN ($filter) GROUP BY product_id HAVING COUNT(product_id) = $cnt)";

 $rows = \R::getAll("SELECT id, articul, category_id, brand_id, title, alias, content, price, old_price, status, keywords, description, img, hit, novinki  FROM product WHERE status = '1' AND category_id IN ($ids) $sql_part LIMIT $start, $perpage");
  • Вопрос задан
  • 94 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
1. Надо включать отображение ошибок РНР.
Тогда ПХП тебе бы прямым текстом сказал, что в нет никакой переменной "priceMan". Хотя если смотреть на полный запрос, то скорее отсутствует parpage
2. Надо использовать для запросов подготовленные выражения
Тогда даже при отсутствии переменной не будет ошибки запроса. Не говоря уже про взлом сайта

Даже такая параша, как тухлая фасоль, и то умеет в замещение переменных в запросе

$params = [
'min' => $_GET['priceMin'],
'max' => $_GET['priceMax'],
'cnt' => $cnt,
'start' =>$start, 
'perpage' =>$perpage,
]
$idparam = '';
foreach ($ids as $i => $item)
{
    $key = ":id$i";
    $idparam .= $idstr? "," : "" . $key;
    $params[$key] = $item; 
}
$filterparam = '';
foreach ($ids as $i => $item)
{
    $key = ":f$i";
    $filterparam .= $filterparam? "," : "" . $key;
    $params[$key] = $item; 
}



$sql = "SELECT id, articul, category_id, brand_id, title, alias, content, price, old_price, status, keywords, description, img, hit, novinki  
FROM product 
WHERE status = '1' AND category_id IN ($idparam) 
AND price > :min AND price < :max
AND id IN (SELECT product_id FROM attribute_product WHERE attr_id IN ($filterparam) 
GROUP BY product_id 
HAVING COUNT(product_id) = :cnt)
LIMIT :start, :perpage"

$rows = \R::getAll($sql, $params);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы