0

我一直在学习一个教程来更好地理解 php 的 oop,但是遇到了一个绊脚石,我不确定这是一个 oop 的事情还是我在做事的过程中没有遇到过的事情,我很漂亮新的并试图快速学习很多东西。我想在继续之前知道发生了什么。

下面是代码,除了为什么在 users_username 下我需要'和另一个',在选择 users_email? 起初我认为这是一种分离它们的方法,因此作为测试我删除了它们并返回错误:尝试获取非对象的属性。所以我猜测通过删除它们我会以某种方式停止将名称创建为对象?还是我离题了。

"SELECT CONCAT(users_username,
                        ',
                        ',
                        users_email)
                        AS name,
          DATE_FORMAT(users_joined, '%M %d, %Y') AS dr
          FROM users
          ORDER BY users_joined
          ASC";

    $r = $mySqli->query($q);//run the query

    $num = $r->num_rows;//assign the number of rows

    if($num > 0){//if there are members in the database

        echo '<p>There are currently ' . $num . ' members registered.</p>' . "\n";

        while($row = $r->fetch_object()){

            echo $row->name . ' ' . $row->dr . "<br/>";

        }
    }

抱歉,如果这个问题以前被问过很多次,但我不知道如何搜索这个问题。

4

1 回答 1

0

CONCAT(users_username, ',',users_email) 所做的是将 users_username 附加一个逗号,然后附加 users_email。因此,如果 users_username 是 bob 并且 users_email 是 bob@example.com 将返回“bob,bob@example.com”。

如果您删除单引号,那么它只是 CONCAT(users_username,,,users_email) 并且 PHP 可能不喜欢逗号之间没有任何内容。在这种情况下,查询可能会失败并为 $row 返回 NULL。因此,当您执行 $row->name 时,它​​会尝试获取 $row 的 name 属性,但由于 $row 为 NULL 它没有任何属性。

于 2012-09-29T20:41:05.627 回答