【问题标题】:Help troubleshooting PDO prepared statement帮助排除 PDO 准备语句
【发布时间】:2009-09-30 03:05:22
【问题描述】:

我刚刚开始学习有关 PDO 和准备好的语句(这肯定比记住每次都使用 mysql_real_escape_string() 好),但我无法让脚本正确执行:

<?php
error_reporting(E_ALL);
echo "start";

try{
    $dbh=new PDO('mysql:host=localhost;dbname=DBNAME','USER','PWD');
} 
catch(PDOException $e){
    echo 'Error connecting to MySQL!: '.$e->getMessage();
    exit();
}

$dbh->prepare('SELECT * FROM users WHERE uid= ?');
$dbh->execute(array('15400743'));
$result=$dbh->fetchAll();
print_r($result);
echo "end";
?>

这几乎是从示例代码中复制而来的,但执行时只返回“start”。我已经仔细检查了我的 db/user/pw。人们还有什么看错的吗?谢谢!

【问题讨论】:

  • 您可能想要设置$dbh-&gt;setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );。否则你必须检查每个被调用方法的返回值。

标签: php pdo


【解决方案1】:

正确的做法是:

<?php
error_reporting(E_ALL);
echo "start";

try{
    $dbh=new PDO('mysql:host=localhost;dbname=DBNAME','USER','PWD');
} 
catch(PDOException $e){
    echo 'Error connecting to MySQL!: '.$e->getMessage();
    exit();
}

$stmt = $dbh->prepare('SELECT * FROM users WHERE uid= ?');
$stmt->execute(array('15400743'));
$result = $stmt->fetchAll();
print_r($result);
echo "end";
?>

注意对 $stmt 变量的准备和之后的使用。

【讨论】:

    猜你喜欢
    • 2015-12-08
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    相关资源
    最近更新 更多