これは非常に単純なクエリだと思いました:
$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"の結果です