我正在浏览使用MySQLi的教程,但我使用的是PDO而且我一直试图将问题归结为我收到此错误的原因:
致命错误:在第34行的D:\ Program Files(x86)\ xampp \ htdocs \ repos \ bla \ web \ inboxPage.php中调用字符串上的成员函数errorInfo()
这是我试图调用errorInfo()的地方,我之前使用mysql_error();
作为教程,但这也引发了同样的错误。在使用errorInfo()之前,我正在四处查看是否有一个PDO equivelant到mysql_error(),它引导我看到你在下面看到的内容 - 我认为它会起作用。但它没有。
教程示例:
$query = "SELECT id, sender, subject, message FROM messages WHERE reciever='$user'";
$sqlinbox = mysql_query($query);
if(!$sqlinbox)
{
?>
<p><?php print '$query: '.$query.mysql_error();?></p>
<?php
}
我的例子:
$sql = 'SELECT id, Sender, Subject, Message FROM privatemessages WHERE Receiver = :receiver';
$stmt = $conn->prepare($sql);
$stmt->bindParam(':receiver', $user);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$result){
?>
<p><?php print '$sql: '.$sql.errorInfo(); ?></p>
<?php
}
这是我与数据库的连接:
$servername = 'localhost';
$user = 'root';
$pass = '';
$database = 'tutor_database';
try {
$conn = new PDO("mysql:host=$servername;dbname=$database", $user, $pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e){
echo "Connection failed: " . $e->getMessage();
}
另外,我确实尝试了PHP手册网站的第一个例子 - &gt; http://php.net/manual/en/pdostatement.errorinfo.php并发现这样做了我:
PDO :: errorInfo中(): 注意:第37行的D:\ Program Files(x86)\ xampp \ htdocs \ repos \ bla \ web \ inboxPage.php中的数组到字符串转换 $ sql:Array
...来代替。
我很欣赏这方面的一些帮助,因为我显然没有看到发生了什么。提前谢谢。
答案 0 :(得分:1)
在PDO中,必须使用completely different method for the error reporting。简而言之,PDO将报告其错误,而无需编写任何代码。
所以只需取出错误报告部分,只留下
$sql = 'SELECT id, Sender, Subject, Message FROM privatemessages WHERE Receiver = :receiver';
$stmt = $conn->prepare($sql);
$stmt->bindParam(':receiver', $user);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
这就是你所需要的一切。