Есть ли решение "объект класса mysqli_result не может быть преобразован в строку"? - PullRequest
0 голосов
/ 01 мая 2019

Я искал в Интернете некоторые решения, но ни одно из них не работает, и я не могу понять, почему. Я новичок в PHP и MYSQL / MyAdmin, поэтому я действительно не понимаю, что я сделал не так.

Я уже пробовал несколько команд и while $row = $result->fetch_array() и все в таком духе.

$Word = mysqli_query($data, $Word); 
 while ($row = $Word->fetch_assoc()) 
 { 
 foreach($row as $value) echo "<td>$value</td>"; 
 }
$query = "SELECT Word, COUNT(Word) as cnt FROM RandWord WHERE Number = 1 GROUP BY Word";
$stmt = $data->prepare($query);
$stmt->bind_param("s", $Number);
$stmt->execute();
$stmt->bind_result($word, $count);
while ($stmt->fetch()) {
 $Amount = $count;
}
$stmt->close();
echo $Amount;

Я хочу вывести «Count ($ Word);» для меня, но он не может даже эхо, потому что он не может быть преобразован в строку. Я хочу увидеть слово и использовать его.

1 Ответ

4 голосов
/ 01 мая 2019

Вам нужно сначала получить результаты, прежде чем вы сможете их использовать.Вы также уязвимы для атак с использованием SQL-инъекций, поэтому используйте вместо этого подготовленный оператор.

В вашем коде $Word - это объект-результат, который содержит информацию, но вам нужно использовать метод выборки для извлечения данных.первый.count() в PHP используется только для массивов (или для объектов, но не для того объекта, который вы получаете из 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...