Php 帮助排除PDO准备语句的故障
我刚刚开始学习PDO和预处理语句(这似乎比每次都记得使用mysql_real_escape_string()要好),但我在让脚本正确执行时遇到了困难:Php 帮助排除PDO准备语句的故障,php,pdo,Php,Pdo,我刚刚开始学习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 connectin
<?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。还有什么人看错了吗?谢谢 正确的方法是:
<?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";
?>
注意prepare对$stmt变量的辅助作用以及之后的使用。您可能需要设置
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION)代码>。否则,必须检查每个被调用方法的返回值。