Почему объект изменяется в не объекте, когда я добавляю что-то к запросу - PullRequest
0 голосов
/ 05 июня 2018

У меня есть часть этого запроса (это работает):

group_concat(`tag`.`name`) as `tags`

Я изменил его на это, чтобы добавить пробелы в качестве разделителей вместо запятой:

group_concat(`tag`.`name` ASC SEPARATOR '   ') as `tags`

Теперь этобольше не работает с этой ошибкой:

Trying to get property 'num_rows' of non-object in.

Это мой цикл php для получения результатов:

$result = $conn->query($sql_query);
   while($row = $result ->fetch_assoc()) {
 .. the rest

Кто-нибудь знает, почему $ result внезапно больше не является объектом

1 Ответ

0 голосов
/ 05 июня 2018

Вы добавили ASC и SEPARATOR на GROUP CONCAT.Часть SEPARATOR в порядке, но ASC нельзя использовать без ORDER BY.Таким образом, ваш запрос недействителен.Вместо этого вы можете использовать следующий запрос:

GROUP_CONCAT(`tag`.`name` ORDER BY `tag`.`name` ASC SEPARATOR '   ') AS `tags`

Вы используете mysqli::query для выполнения запроса и получения результата.Если ваш запрос недействителен и не может быть выполнен, вы получаете false вместо mysqli_result объекта.Таким образом, вы можете улучшить свой код, как показано ниже, чтобы обеспечить доступ к объекту, только если он доступен:

$result = $conn->query($sql_query);

//check the return value.
if ($result === false) {
    echo 'something went wrong';
} elseif ($result === true) {
    echo 'query executed successfully (not a SELECT statement)';
} else {
    while($row = $result ->fetch_assoc()) {
        //...
    }
}

Примечание: Вам не нужно условие $result === true, есливы используете оператор SELECT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...