【问题标题】:Call to a member function errorInfo() on string调用字符串上的成员函数 errorInfo()
【发布时间】: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-&gt;errorInfo();
  • @Ohgodwhy 我已经尝试了这两种方法,它只会导致我出现第二个错误。

标签: php mysqli pdo


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

这就是你所需要的。

【讨论】:

  • 谢谢!这帮助我继续前进:)
猜你喜欢
  • 2016-05-10
  • 2018-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多