这是上一个问题的后续内容: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变量。我有什么想法我做错了吗?我确信我是个白痴,非常感谢帮助。
答案 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);