有没有解决“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 【问题描述】:我在互联网上搜索了一些解决方案,但没有一个有效,我也找不到原因。我是 php 和 mysql/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 "您需要先实际获取结果,然后才能使用它。您也容易受到 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 类的对象无法转换为字符串”的方法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章