簡體   English   中英

PHP Mysqli准備好的語句select fetch_assoc給出空結果

[英]PHP Mysqli prepared statement select fetch_assoc gives empty result

我正在嘗試一些非常簡單的事情,但由於某種原因它不會像我預期的那樣工作。 為此,我想選擇一個特定的行,然后通過更新將該行分配給另一個表。

這是我要運行的腳本:

<?php
$passedID = $_POST["upvotedurl"];

$mysqli = new mysqli('localhost', 'root', '', 'osscom_users_test');

$sqlstm = "SELECT * FROM image_uploads WHERE THMPATH=?";
$fstmt = $mysqli->prepare($sqlstm);
$fstmt->bind_param("s", $passedID);
$fstmt->execute();
$fstmt->store_result();
$json = $fstmt->get_result()->fetch_assoc();

foreach ($json as $value) {

    $val1 = $value['THMPATH']; // this is empty, why???

    $sql = "UPDATE image_uploads SET IMGNAME=? WHERE THMPATH=?";
    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param("ss", $val1, $passedID);
    $stmt->execute();
    $stmt->close();
}
$fstmt->close();
$mysqli->close();
?>

出於一個奇怪的原因,我無法解釋SELECT查詢為空的變量$value

正如您在示例中所看到的,我得到的THMPATH絕對不是空的,並且我也在下面的UPDATE中使用了相同的值。 如果我使用$val1 = "Wololo"之類的東西,它會$val1 = "Wololo"工作。

為什么我的$value (在這種情況下$value['THMPATH'] )是空的? 這毫無意義?

更新

運行時file_put_contents('../session/log.txt', print_r($json, true)); 這是結果:

Array
(
    [ID] => 511
    [OWNER] => User Name
    [IMGNAME] => Wagirigoingi
    [IMGTAGS] => image, photo, picture
    [IMGPATH] => 1028525690.jpg
    [THMPATH] => ../thumbnails/5560921208_username.jpg
    etc..
)

所以選擇有效,但我仍然無法獲得值。

您的結果是數組中的單個記錄。 當您執行foreach ($json as $value)$value將有 511、用戶名、Wagirigoingi 等。在某些時候, $value將具有與$json數組中的 THMPATH 對應的值,但任何時候都不會$value是一個數組,所以$value['THMPATH']永遠不會有效。

您大概想要的是完全消除foreach循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM