Mysql PDO准备的查询不返回任何内容

Mysql PDO准备的查询不返回任何内容,mysql,pdo,prepared-statement,Mysql,Pdo,Prepared Statement,这是前一个问题的后续问题: 我完全是个初学者,在查询数据库之前,我在每个GET和POST变量上都使用了mysql\u real\u escape。当我上传到我的主机时,我意识到你不应该在PDO中使用这个。Im正在将包含用户提交数据的所有查询更改为准备好的查询 我像这样连接到数据库: $hostname = "localhost"; $username = "root"; $password = "root"; try { $dbh = new PDO("mysql:host=$hos

这是前一个问题的后续问题:

我完全是个初学者,在查询数据库之前,我在每个GET和POST变量上都使用了mysql\u real\u escape。当我上传到我的主机时,我意识到你不应该在PDO中使用这个。Im正在将包含用户提交数据的所有查询更改为准备好的查询

我像这样连接到数据库:

$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\u r绝对不输出任何内容,我正在使用DB中的测试值测试GET变量。知道我做错了什么吗?我敢肯定我是个白痴,非常感谢您的帮助。

您只需在获取结果之前查询即可

$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);

@据报道,马特做得对,先生,你应该得到一个温暖的握手。我知道这是我在学校犯的错误。干得好@matt没问题-我怀疑你的另一个问题的答案引起了混淆,回答者使用了
查询
而不是
准备
,因此没有调用
执行
。在这种特定情况下使用准备或查询有什么区别?有更好的做法吗?
query
prepare
还有更多的内容:和