我认为这是一个非常简单的查询:
$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
,我不会在屏幕上显示任何结果(实际上,我没有在屏幕上显示任何内容,甚至没有echo
!)
这不是一个特别大的表(少于 300 行),这个查询应该返回 10 行左右(并且SELECT
语句在 中运行良好phpmyadmin
,返回预期的结果)
我究竟做错了什么?
编辑:
我已经检查过以确保 $qstring 实际上是一个字符串:这是结果var_dump
:string(14) "riskassessment"