我剛剛使用mysqli將所有的sql查詢改爲準備語句。爲了加速這個過程,我創建了一個函數(稱爲performQuery
),它取代了mysql_query
。它接受查詢,綁定(如「sdss」)和變量傳入,然後執行所有準備好的語句。這意味着改變我所有的舊代碼很容易。我的函數使用mysqli get_result()
返回一個mysqli_result
對象。Mysqli get_result替代
這意味着我可以從改變我的舊代碼:
$query = "SELECT x FROM y WHERE z = $var";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)){
echo $row['x'];
}
到
$query = "SELECT x FROM y WHERE z = ?";
$result = performQuery($query,"s",$var);
while ($row = mysql_fetch_assoc($result)){
echo $row['x'];
}
這工作在本地主機上很好,但我的虛擬主機服務器沒有可用的mysqlnd,因此get_result()
不工作。安裝mysqlnd不是一個選項。
什麼是離開這裏最好的方式?我可以創建一個替代get_result()
的函數,以及如何?
作品像一個魅力<3 –
嗨菲利普,我用這個代碼,它很好的99%,但對於某些情況下它失敗,在我的數據庫表中有列包含此字符串「我們正在尋找使用石棉表。被破壞,所需厚度爲10毫米。「所以它失敗了這個字符串。任何想法? – Sandeep
列的名稱和數據類型是什麼?你有多確定問題出在這個功能上?你排除了其他所有可能嗎? – Sophivorus