【问题标题】:PDO prepared query returns nothingPDO 准备好的查询不返回任何内容
【发布时间】:2012-10-16 20:10:36
【问题描述】:

这是上一个问题的后续: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 完全没有输出,我正在使用来自数据库的测试值测试我的 GET 变量。任何想法我做错了什么?我确定我是个白痴,非常感谢您的帮助。

【问题讨论】:

  • @Skrol29 根据the docs 的说法,马特做得对。

标签: mysql pdo prepared-statement


【解决方案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);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-16
  • 2013-12-24
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多