为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕仙森 2022-07-16 18:23:26
我正在尝试一些非常简单的东西,但由于某种原因,它不会像我预期的那样工作。为此,我想选择一个特定的行,然后通过更新将该行分配给另一个表。这是我要运行的脚本:<?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..)所以选择有效,但我仍然无法获得值。
查看完整描述

1 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

您的结果是数组中的一条记录。当您这样做时foreach ($json as $value)$value将有 511、用户名、Wagirigoingi 等。在某些时候,$value将在数组中具有与 THMPATH 对应的值$json,但在任何时候都不会$value是一个数组,因此$value['THMPATH']永远不会有效。

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


查看完整回答
反对 回复 2022-07-16
  • 1 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信