gpt4 book ai didi

php - 调用未定义的方法 PDOStatement::setFetchMode()

转载 作者:可可西里 更新时间:2023-11-01 13:29:34 25 4
gpt4 key购买 nike

我正在使用 drupal 7,在 PHP 7 上,在 Windows 上的 Xampp 上,突然我开始收到以下错误:

Call to undefined method DatabaseStatementBase::setFetchMode()

其中 DatabaseStatementBase 直接扩展 PDOStatement。将代码减少到以下最小值时:

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', 'test', 'test');
$pdostatement = $dbh->prepare('SELECT * FROM items WHERE id=?');
$pdostatement->setFetchMode(PDO::FETCH_CLASS);
$success = $pdostatement->execute([1]);
// do stuff...

它仍然在有关 setFetchMode 的行上抛出错误。当我注释掉该行时,不会抛出任何错误,但我得到了一个关联数组而不是一个对象——这不是 drupal 所期望的。特别是因为 setFetchMode 应该存在(参见 http://php.net/manual/en/pdostatement.setfetchmode.php )

最后,当我尝试使用反射查找 $pdostatement 的方法时,我得到了一些名称的垃圾——或者,更准确地说,名称似乎长约 1.5MB,包含很多不可读的字符和一些方法名称,就好像整个 DLL 都被加载在那里一样。下面是 var_dump(php7 和 xdebug)的例子:

object(ReflectionMethod)[17]
public 'name' => string '����&������p�aZ������������ ���bindParam�������{�nZ���������������setAttribute����f�kZ����������j����FETCH_ORI_FIRST�a�pZ���������q��
���CURSOR_SCROLL���l�}Z���������������fetchColumn������zZ��������������wph�����&��������Z���������������debugDumpParams���Z��������.�����children����������Z������������wphX����&��������Z��������(��
���nextrowset��������Z������������
���__toString������ ��Z������������wph(����&������4��Z��������'... (length=1752201104)
public 'class' => string 'PDOStatement' (length=12)

我该如何解决这个问题?

最佳答案

解决方案是:尝试将其关闭并重新打开——在本例中是 Apache 服务器。显然内存中的某些东西损坏了,重新启动服务器修复了它。

我认为这已经是我昨天在问题出现后关闭计算机并在今天早上再次启动时完成的。现在我知道了:Windows 8 及更高版本使用混合关机/休眠而不是真正的关机,因此如果您认为您重新启动了您的 PC,您的 Apache 服务并没有真正重新启动。

不知怎的,这让我觉得自己很蠢......

关于php - 调用未定义的方法 PDOStatement::setFetchMode(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47470038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com