2012-03-22 2 views
1

Как фильтровать по столбцам с PDO? У меня есть следующее:Простой MySQL SELECT с PDO

$sth = $dbh->query('SELECT * from blog ORDER BY date DESC LIMIT 4'); 

Это, очевидно, возвращает последние 4 результата. Я хочу добавить еще один шаг и фильтровать по определенной колонке под названием category

Так, что-то вроде:

$sth = $dbh->query('SELECT * from blog WHERE category=NAME-HERE ORDER BY date DESC LIMIT 4'); 

Спасибо!

ответ

4

я предложил бы использовать подготовленные заявления с именованными параметрами:

$stmt = $dbh->prepare("SELECT * FROM blog WHERE category=:category ORDER BY date DESC LIMIT 4"); 
$stmt->bindParam(':category', $category); 
$stmt->execute(); 

PDO автоматически завернуть кавычки параметра category, если это строка.

Если значение $category не исходит из ненадежного источника, вы можете изменить свой код следующим образом:

$sth = $dbh->query("SELECT * from blog WHERE category='$category' ORDER BY date DESC LIMIT 4"); 
/** OR **/ 
$sth = $dbh->query('SELECT * from blog WHERE category="'.$category.'" ORDER BY date DESC LIMIT 4'); 

Обратите внимание, что в приведенном выше случае, вы сделать нужно кавычки переменной $category так как вы сами строите строку запроса.

+0

Требуется привязка, если 'SELECT' не создан пользователем? –

+1

@Justin: В любом случае вам не нужны кавычки вокруг ': category' в SQL. Фактически, если вы включите их, ': category' будет интерпретироваться как буквальная строка, а не параметр. – cHao

+0

@Justin ᚅᚔᚈᚄᚒᚔ Спасибо! –

Смежные вопросы