2013-01-05 40 views
0

我正在尝试找出在单个脚本中使用PDO运行多个SQL查询的最佳做法。数据库连接在脚本的开始处进行,但我需要进行多个不同的查询。我在做什么目前(这我不知道,最好的方法)是:脚本中的多个PDO查询

$db = new PDO('mysql:host='.$DBHOST.';dbname='.$DBNAME.';charset=UTF-8', $DBUSER, $DBPASSWORD); 

$query = $db->prepare("SELECT count(*) as total from bande_ips WHERE ip=:ip"); 
$query->bindValue(':ip', $_SESSION['REMOTE_ADDR'], PDO::PARAM_STR); 
$query->execute(); 
$array = $query->fetchAll(PDO::FETCH_ASSOC); 

$query = NULL; 
$query = $db->prepare("SELECT * from failed_login WHERE IP=:ip and email=:email"); 
$query->bindValue(':ip', $_SESSION['REMOTE_ADDR'], PDO::PARAM_STR); 
$query->bindValue(':email', $email, PDO::PARAM_STR); 
$query->execute(); 
$array = $query->fetchAll(PDO::FETCH_ASSOC); 

,你可以看到我在一个脚本中准备两个单独的查询。但是我开始设置$query = NULL;,因为脚本事先混淆了单独的查询(它预期的参数是我不再打电话的旧查询的参数,这导致我不确定这是否是最佳做法。)

I只是想确认在我继续迁移到PDO之前,这是最佳做法。

+0

没有错 –

+1

我建议使用不同的变量名,因为这可能会引起误解和容易出错的 - 但是,如果你这样做,避免使用'query1','query2' ... – tmuguet

+0

@tmuguet我个人没有看到这个好处。它对我来说看起来像是一种无用的内存使用。小心解释为什么? – JimmyBanks

回答

1

剧本事先混淆了单独的查询(它在等一个旧的查询,我不再调用的参数)

这与其他一些代码的程序流程的问题。最有可能运行在一个循环中。

至于你在这里发布的代码,没有必要将$query设置为NULL - 无论如何它都会被下一行覆盖。

请注意,有效的字符集为MySQL是utf8,不utf-8

+0

是的,这是正确的我在代码中导致了错误的问题,并设置“$查询= NULL”实际上没有做任何有用的事情。 – JimmyBanks