过滤PDO SQL查询

时间:2012-06-27 12:33:06

标签: php mysql select filter pdo

我在我的PHP页面中使用PDO方法来破坏两个字符串(为了创建图形...长篇故事!),但我不知道如何过滤它们。 MySQL中的表结构如下:

列名: 项目(正在投票的项目的名称); nvote (此项目获得的投票数); 日期(投票日期)

这是我到目前为止所做的:

$stmt1 = $db->prepare("SELECT date FROM vote"); 
$stmt1->execute();

$stmt2 = $db->prepare("SELECT nvote FROM vote"); 
$stmt2->execute();

$line1 = implode( ',', $stmt1->fetchAll (PDO::FETCH_COLUMN) ); 
$line2 = implode( ',', $stmt2->fetchAll (PDO::FETCH_COLUMN) );

(Line1创建我的图的x轴,line2创建y轴)

这非常适合为我的图形生成字符串。

如何过滤这些内容,以便投票的项目名称(在“项目”列中“)被var过滤(在本例中为$nameofitem)?我似乎无法让它发挥作用。

1 个答案:

答案 0 :(得分:1)

$params = array(':value' => 'Hello World');
$stmt1 = $db->prepare("SELECT date FROM vote WHERE item = :value ORDER BY date"); 
$stmt1->execute($params);

$stmt2 = $db->prepare("SELECT nvote FROM vote WHERE item = :value ORDER BY date"); 
$stmt2->execute($params);

$line1 = implode( ',', $stmt1->fetchAll (PDO::FETCH_COLUMN) ); 
$line2 = implode( ',', $stmt2->fetchAll (PDO::FETCH_COLUMN) );

关键是在SQL查询中添加一个WHERE条件,其参数在传递数组时由execute绑定。

请注意,我还为您添加了一个订单声明,因为没有保证没有它的结果排序,这意味着您在图表上看到的点可能与错误的点相关联。日期可能不是最佳选择,如果可以,请使用唯一密钥。或者,您可以在单个查询中获取所有内容,并使用后期处理构建列表。