使用PDO的简单MySQL SELECT

时间:2012-03-22 21:02:16

标签: mysql pdo

如何使用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'); 

谢谢!

1 个答案:

答案 0 :(得分: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变量引用,因为您自己构建了查询字符串。