有没有解决“mysqli_result 类的对象无法转换为字符串”的方法? [复制]

Posted

技术标签:

【中文标题】有没有解决“mysqli_result 类的对象无法转换为字符串”的方法? [复制]【英文标题】:Is there a solution to "object of class mysqli_result could not be converted to string"? [duplicate] 【发布时间】:2019-09-19 14:08:03 【问题描述】:

我在互联网上搜索了一些解决方案,但没有一个有效,我也找不到原因。我是 phpmysql/MyAdmin 的新手,所以我真的不明白我做错了什么。

我已经尝试了几个命令和“while $row = $result->fetch_array()”之类的东西。

$Word = "SELECT Word FROM RandWord WHERE Number = '$Number'";
$Word = mysqli_query($data, $Word);
echo $Word;
$Amount = count($Word);

我希望它输出“Count($Word);”对我来说,但它甚至不能回显,因为它不能转换成字符串。我想看到这个词并使用它。

【问题讨论】:

回声 $Word; 是的,我知道,但它根本无法输出,因为它无法转换为字符串,这是我的问题。 $Word = "从 RandWord 中选择单词 WHERE Number = '$Number'"; $Word = mysqli_query($data, $Word); while ($row = $result->fetch_assoc()) foreach($row as $value) echo "$value"; 不知道有没有帮助 致命错误:未捕获错误:在 /users/hangmanbr/www/Playing.php:9 中的字符串上调用成员函数 fetch_assoc() 堆栈跟踪:在 /users/ 中抛出 #0 main hangmanbr/www/Playing.php 在第 9 行 /// 很遗憾,它没有 你可以尝试改变 $result->fetch_assoc() => $Word->fetch_assoc() 吗? 【参考方案1】:

您需要先实际获取结果,然后才能使用它。您也容易受到 SQL 注入攻击,因此请改用准备好的语句。

在您的代码中,$Word 是一个结果对象,其中包含信息 - 但您需要先使用获取方法来检索数据。 PHP 中的count() 仅可用于数组(或对象,但不能用于从mysqli_query() 获得的对象)。

$query = "SELECT Word FROM RandWord WHERE Number = ?";
$stmt = $data->prepare($query);
$stmt->bind_param("s", $Number);
$stmt->execute();
$stmt->bind_result($word);
while ($stmt->fetch()) 
    echo $word;

$stmt->close();

如果您希望它成为每个单词的计数,则必须改为使用 MySQL 函数 COUNT() 运行查询。

$query = "SELECT Word, COUNT(Word) as cnt FROM RandWord WHERE Number = ? GROUP BY Word";
$stmt = $data->prepare($query);
$stmt->bind_param("s", $Number);
$stmt->execute();
$stmt->bind_result($word, $count);
while ($stmt->fetch()) 
    echo $word." has count ".$count;

$stmt->close();

【讨论】:

警告:mysqli_stmt::bind_param() [mysqli-stmt.bind-param]:变量数与 /users/hangmanbr/www/Playing.php 中准备好的语句中的参数数不匹配在第 12 行 CAMP // 它告诉我“CAMP”这个词,但我怎样才能摆脱这个错误消息? @HelpNeeded 您可以编辑问题并添加您的代码现在的样子吗? 该错误与我的答案中的确切代码不匹配,您正在做一些不同的事情。有一个占位符、一个类型定义和一个值。 @HelpNeeded 您将代码的整个查询部分替换为这些准备好的语句。在它之前不会有mysqli_query()(无论如何对于这个特定的查询)。您在第一条评论中描述的错误与我的答案中给出的代码不对应,因此您必须做一些不同的事情。

以上是关于有没有解决“mysqli_result 类的对象无法转换为字符串”的方法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法解决这个 TypeError

有没有可能,用mysql去中心化的解决方案

AngularJS有没有类似excel的网格解决方案

《网易MUMU》没有网络解决方法

为啥 `as` 方法会删除向量名称,有没有办法解决它?

导致 ERROR 递归调用 appender。有没有办法解决它?