2014-03-18 88 views
1

研究,通過Google尋找stackoverflow,我發現有幾個人有同樣的問題,並且解決方案通常是「僅適用於mysqlnd」。PHP mysqli_stmt :: get_result()未定義方法

因此,我環顧四周,戳了一些代碼,但據我所知,在我的服務器上啓用了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服務器上工作。

+0

我認爲get_result()不起作用,如果你沒有libmysqlnd isntalled。 – raser

+0

'var_dump($ stmt)'告訴你什麼? – tlenss

+0

您需要發佈更多的代碼,而不僅僅是錯誤指示的行。我們需要看看'$ stmt'是如何初始化的。 – Sammitch

回答

0

在嘗試了很多事情之後,我使用MySQL(不是系統的MySQL)和MySQL Improved(MySQLi)重建了Apache(使用EasyApache的WHM)。以前我曾經使用MySQL(系統的)和MySQL改進的組合。構建完成後,所有事情都像魔術一樣工作。

謝謝大家!

1

它不僅需要mysqlnd的存在,而且mysqli必須專門用mysqlnd支持來構建。要做到這一點,PHP必須與配置選項

--with-mysqli=mysqlnd 
在你的phpinfo輸出

建成,mysqlnd在mysqli的部分Client API library version項目下被提及:

好: enter image description here

不好: enter image description here

我不知道XAMPP,因爲我總是手動構建整個服務器。看來你需要尋找另一個版本或其他分佈。

相關問題