tôi nghĩ đây là một câu hỏi khá đơn giản:mysqli_stmt_bind_param gây lỗi nghiêm trọng: kích thước bộ nhớ cạn kiệt
$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);
Tuy nhiên, php dường như lại nghĩ khác. Khi chạy truy vấn, tôi nhận được lỗi sau:
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
khi sử dụng đường dây mysql_stmt_bind_param
. Nếu tôi rời khỏi dòng đó ra và điều chỉnh báo cáo kết quả SELECT
sử dụng chuỗi biến $qstring
trực tiếp, tôi nhận được không có kết quả hiển thị trên màn hình (trên thực tế, tôi nhận được NOTHING hiển thị trên màn hình, chứ không phải ngay cả những echo
!)
isn này không phải là một bảng đặc biệt lớn (dưới 300 hàng) và truy vấn này sẽ trả về 10 hàng hoặc hơn (và câu lệnh SELECT
hoạt động tốt trong phpmyadmin
, kết quả mong đợi được trả lại)
Tôi đang làm gì sai?
Edit:
tôi đã kiểm tra để đảm bảo $ QString đã thực sự là một chuỗi: đây là kết quả của var_dump
: string (14) "riskassessment"
Bạn đang sử dụng máy chủ cPanel? –
Thực hiện thử nghiệm này: $ qry = "SELECT liên kết thẻ, tagtitle, tagshow FROM taglist_main WHERE tag = '". $ Qstring. "'"; echo $ qry, và post plss đầu ra – Hackerman
Nội dung của '$ qstring' là gì? Bạn có thể làm một 'var_dump ($ qstring)' và chỉnh sửa nó vào câu hỏi của bạn? – andrewsi