4 回答

TA貢獻1856條經驗 獲得超5個贊
因此,如果MySQL本機驅動程序(mysqlnd)驅動程序不可用,因此使用bind_result和fetch而不是get_result,代碼將變為:
include 'conn.php';
$conn = new Connection();
$query = 'SELECT EmailVerified, Blocked FROM users WHERE Email = ? AND SLA = ? AND `Password` = ?';
$stmt = $conn->mysqli->prepare($query);
$stmt->bind_param('sss', $_POST['EmailID'], $_POST['SLA'], $_POST['Password']);
$stmt->execute();
$stmt->bind_result($EmailVerified, $Blocked);
while ($stmt->fetch())
{
/* Use $EmailVerified and $Blocked */
}
$stmt->close();
$conn->mysqli->close();

TA貢獻1836條經驗 獲得超5個贊
你的系統缺少mysqlnd驅動程序!
如果您能夠在(基于Debian / Ubuntu的)服務器上安裝新軟件包,請安裝驅動程序:
sudo apt-get install php5-mysqlnd
然后重新啟動您的Web服務器:
sudo /etc/init.d/apache2 restart

TA貢獻1804條經驗 獲得超2個贊
對于那些搜索$ result = stmt-> get_result()的替代方法的人我已經創建了這個函數,它允許你模仿$ result-> fetch_assoc()但直接使用stmt對象:
function fetchAssocStatement($stmt){ if($stmt->num_rows>0) { $result = array(); $md = $stmt->result_metadata(); $params = array(); while($field = $md->fetch_field()) { $params[] = &$result[$field->name]; } call_user_func_array(array($stmt, 'bind_result'), $params); if($stmt->fetch()) return $result; } return null;}
正如你所看到它創建一個數組并使用行數據獲取它,因為它在內部使用$ stmt-> fetch(),你可以像調用mysqli_result :: fetch_assoc一樣調用它(只需確保$ stmt對象)打開并存儲結果):
//mysqliConnection is your mysqli connection objectif($stmt = $mysqli_connection->prepare($query)){ $stmt->execute(); $stmt->store_result(); while($assoc_array = fetchAssocStatement($stmt)) { //do your magic } $stmt->close();}
希望這可以幫助。
添加回答
舉報