【发布时间】:2016-08-06 07:46:30
【问题描述】:
我正在浏览一个使用 MySQLi 的教程,但我使用的是 PDO,我一直在尝试将问题归结为我收到此错误的原因:
致命错误:在第 34 行对 D:\Program Files (x86)\xampp\htdocs\repos\bla\web\inboxPage.php 中的字符串调用成员函数 errorInfo()
这是我试图调用 errorInfo() 的地方,我之前按照教程使用过 mysql_error();,但这也引发了同样的错误。在使用 errorInfo() 之前,我环顾四周,看看是否有一个与 mysql_error() 等效的 PDO,这让我看到了你在下面看到的内容——我认为它会起作用。但它没有。
教程示例:
$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 手册网站上的第一个示例 -> http://php.net/manual/en/pdostatement.errorinfo.php 并发现这样做给了我:
PDO::errorInfo(): 注意:第 37 行 D:\Program Files (x86)\xampp\htdocs\repos\bla\web\inboxPage.php 中的数组到字符串转换 $sql: 数组
...改为。
希望能提供一些帮助,因为我显然无法看到正在发生的事情。提前致谢。
【问题讨论】:
-
@Chay22 您需要将其从连接中调用,而不是从语句中调用。
$conn->errorInfo(); -
@Ohgodwhy 我已经尝试了这两种方法,它只会导致我出现第二个错误。