PHP Mysqli 准备好的语句 select fetch_assoc 给出空结果

我正在尝试一些非常简单的东西,但由于某种原因,它不会像我预期的那样工作。为此,我想选择一个特定的行,然后通过更新将该行分配给另一个表。


这是我要运行的脚本:


<?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();

?>

由于一个奇怪的原因,我无法解释查询为空的变量$value形式。SELECT


正如您在示例中看到的那样,我得到的THMPATH绝对不是空的,并且我也在UPDATE下面使用相同的值。如果我会使用类似的东西,$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..

)

所以选择有效,但我仍然无法获得值。


慕仙森
浏览 131回答 1
1回答

万千封印

您的结果是数组中的一条记录。当您这样做时foreach ($json as $value),$value将有 511、用户名、Wagirigoingi 等。在某些时候,$value将在数组中具有与 THMPATH 对应的值$json,但在任何时候都不会$value是一个数组,因此$value['THMPATH']永远不会有效。您大概想要的是foreach完全消除循环。
打开App,查看更多内容
随时随地看视频慕课网APP