我認爲這是一個很簡單的查詢:mysqli_stmt_bind_param導致致命的錯誤:內存容量用盡
$qry="SELECT taglink, tagtitle, tagshow FROM taglist_main WHERE tag = ?";
if ($stmt = mysqli_prepare($link,$qry)) {
mysqli_stmt_bind_param($stmt,"s",$qstring);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt,$taglink,$tagtitle,$tagshow);
mysqli_stmt_store_result($stmt);
echo "<p><strong>".mysqli_stmt_num_rows($stmt)."</strong> entries found, shown below.</p>";
while (mysqli_stmt_fetch($stmt)) {
echo "<li><a href=\"/$taguri\" title=\"$tagtitle\">$tagshow</a></li>";
}
mysqli_stmt_close($stmt);
然而,PHP似乎認爲並非如此。在運行查詢時,出現以下錯誤:
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 4294967296 bytes) in /home/envoyenv/public_html/envoytest/tags/index.php on line 110
當使用mysql_stmt_bind_param
行時。如果我離開這一行,並可以調整SELECT
語句直接使用字符串變量$qstring
,我沒有得到任何屏幕上顯示的結果(實際上,我在屏幕上得到顯示NOTHING,甚至沒有echo
!)
這ISN是一個特別大的表(少於300行),並且此查詢應該返回10行左右(並且SELECT
語句在phpmyadmin
中正常工作,預期結果將返回)
我在做什麼錯?
編輯:
我已經檢查,以確保$ QString的竟是一個字符串:這裏的var_dump
結果:字符串(14) 「riskassessment」
你在cPanel服務器上嗎? –
做這個測試:$ qry =「SELECT taglink,tagtitle,tagshow FROM taglist_main WHERE tag ='」。$ qstring。「'」; echo $ qry,並輸出plss – Hackerman
'$ qstring'的內容是什麼?你可以做'var_dump($ qstring)'並將其編輯到你的問題中嗎? – andrewsi