2

这是上一个问题的后续:何时使用 PDO 准备查询。mysql_real_escape 错误

我是一个完全的初学者,在查询我的数据库之前,我在每个 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 绝对没有输出,我正在使用数据库中的测试值测试我的 GET 变量。任何想法我做错了什么?我确定我是个白痴,非常感谢您的帮助。

4

1 回答 1

1

您只需要在获取结果之前执行查询。

$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);
于 2012-10-26T14:42:32.447 回答