PDO准备的查询什么都不返回

时间:2012-10-26 14:36:40

标签: mysql pdo prepared-statement

这是上一个问题的后续内容:When to use PDO prepared queries. mysql_real_escape error

我是一个初学者,在我查询我的数据库之前,在每个GET和POST变量上都使用了mysql_real_escape。当我上传到我的主机时,我意识到你不应该在PDO上使用它。我正在使用用户提交的数据将所有查询更改为准备好的查询。

我这样连接到我的数据库:

$hostname = "localhost";
$username = "root";
$password = "root";

try {
     $dbh = new PDO("mysql:host=$hostname;dbname=wmpt", $username, $password);

}
catch(PDOException $e)
    {
    echo $e->getMessage();
    }

下面是一个示例查询:

$url = $_GET['q'];
$STH = $dbh->prepare("SELECT qid FROM tblurl WHERE url = :url");
$STH->bindParam(':url', $url);
$STH->setFetchMode(PDO::FETCH_ASSOC);  
$urlid = $STH->fetch();
print_r($urlid);

print_r绝对没有输出,我正在使用DB中的测试值测试我的GET变量。我有什么想法我做错了吗?我确信我是个白痴,非常感谢帮助。

1 个答案:

答案 0 :(得分:1)

您只需要execute查询,然后才能获取结果。

$url = $_GET['q'];
$STH = $dbh->prepare("SELECT qid FROM tblurl WHERE url = :url");
$STH->bindParam(':url', $url);

$STH->execute();

$STH->setFetchMode(PDO::FETCH_ASSOC);  
$urlid = $STH->fetch();
print_r($urlid);