PHP mysqli_stmt :: get_result()是未定义的方法

时间:2014-03-18 22:11:05

标签: php mysqli mysqlnd

研究,查看stackoverflow,通过Google查看,我发现有几个人遇到同样的问题,解决方案通常是“仅适用于mysqlnd。”

所以我环顾四周并查看了一些代码,但据我所知,我的服务器启用了mysqlnd IS。所以我这样做相信这是重复

$id = $stmt->get_result();

无论出于何种原因,这行代码似乎在我的应用程序中造成打嗝,这在我的本地XAMPP服务器上完美运行。我认为这是我的公共服务器配置的某种问题,但我无法弄清楚是什么。

PHP正在抛出此错误:

[18-Mar-2014 15:39:27 America/Denver] PHP Fatal error:  
Call to undefined method mysqli_stmt::get_result() in 
/home/PATH/PAGE.php on line 47

同样,我的代码在我的本地服务器上运行良好。这是我的phpinfo() ...

的一些快照

MySQLi Seems to Exist...

MySQLnd Seems to Exist...

只是为了衡量,我的PHP版本是5.4.22。最后,在系统控制台中运行php -i | grep mysqlnd会给我mysqlnd => enabled

那么......怎么了?我错过了什么?谢谢您的考虑。我希望这也可以帮助其他人。更多代码(根据要求)......

$mysqli = new mysqli('localhost', 'usr', 'pass', 'table');
$chkid = "SELECT * FROM `students` WHERE student_id = ? LIMIT 1";
if ($mysqli->connect_error) { //We'll catch an error or two here.
  die("{CNCT}");
} 
$arrays = json_decode($_POST['data'], true); //Here, we take the JSON string and create PHP arrays
for ($x=0; $x<=((count($arrays))-1); $x++) { //We count the array
  $stmt = $mysqli->prepare($chkid);
  $inputz = ($arrays[$x]['id']);
  $stmt->bind_param("s", $inputz);
  $stmt->execute();
  $id = $stmt->get_result(); //THIS LINE
  $stmt->close();
  $row = $id->fetch_array(MYSQLI_NUM);
}

我希望我能在不搞砸代码的情况下适当地删除所需的一切。它正在我的本地XAMPP服务器上工作。

2 个答案:

答案 0 :(得分:1)

它不仅需要mysqlnd存在本身,而且还必须使用mysqlnd支持专门构建mysqli。为此,必须使用配置选项

构建PHP
--with-mysqli=mysqlnd

在你的phpinfo输出中,必须在mysqli部分的Client API library version项下提及mysqlnd:

○: enter image description here

不好: enter image description here

我对XAMPP一无所知,因为我总是手动构建整个服务器。您似乎需要寻找其他版本或其他版本。

答案 1 :(得分:0)

在尝试了很多东西后,我用MySQL( NOT 系统的MySQL)和MySQL Improved(MySQLi)重建了Apache(在WHM中,使用EasyApache)。以前我曾使用MySQL(系统)和MySQL改进的组合。构建完成后,一切都像魔术一样工作。

谢谢大家!