当我向查询添加内容时,为什么对象在非对象中发生更改

时间:2018-06-05 09:47:53

标签: php mysql mysqli

我有一部分此查询(这有效):

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 :(得分:2)

您在GROUP CONCAT上添加了ASCSEPARATORSEPARATOR部分很好,但ASC没有ORDER BY就无法使用GROUP_CONCAT(`tag`.`name` ORDER BY `tag`.`name` ASC SEPARATOR '   ') AS `tags` 。所以你的查询无效。您可以改为使用以下查询:

false

您正在使用mysqli::query执行查询并获取结果。如果您的查询无效且无法执行,则会获得$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()) { //... } } 而不是mysqli_result对象。因此,您可以改进代码,如下所示,以确保只有对象可用才能访问:

$result === true

注意:如果您使用SELECT语句,则不需要dotnet run C:\Users\barn\source\repos\FLG\docker-compose.dcproj : error MSB4236: The SDK 'Microsoft.Docker.Sdk' specified could not be found. The build failed. Please fix the build errors and run again. 条件。