Переменные PHP - PullRequest
       36

Переменные PHP

1 голос
/ 22 октября 2009

Я пишу этот класс комментариев:

class Comment {

    public $id;
    public $post_id;
    public $name;
    public $email;
    public $website;
    public $body;
    public $date;
    public $ip_address;
    public $status;

    function __construct($id) {

        global $db;

        $resc = $db->query("SELECT * FROM blog_comments WHERE id='$id' LIMIT 1");

        while($row = $db->fetch_assoc($resc)) {
            while ($comment = current($row)) {
                $key = key($row);
                $this->$key = $comment{$key};
                next($row);
            }
        }
    }
}

Вот что вернет запрос внутри конструктора при запуске в базе данных:

Результаты запроса http://17webshop.com/wp-content/uploads/2009/10/Picture-2.png

Но когда я запускаю его, это то, что print_r (новый комментарий (1)); выплевывает:

Comment Object
(
    [id] => 1
    [post_id] => 1
    [name] => J
    [email] => j
    [website] => h
    [body] => b
    [date] => 1
    [ip_address] => :
    [status] => 1
)

Есть идеи, почему я получаю только первый символ каждого поля?

Спасибо.

Ответы [ 3 ]

6 голосов
/ 22 октября 2009

Вы хотите

$comment[$key]

$ comment {$ key} даст вам n-й символ строки. Поскольку $ key является строкой, PHP преобразует ее в целое число 0, и вы получите первый символ.

3 голосов
/ 22 октября 2009

current / next болезненно, и я не уверен, что с {} разыменованием.

Почему бы просто:

$resc = $db->query("SELECT * FROM blog_comments WHERE id='$id' LIMIT 1");

while($row = $db->fetch_assoc($resc)) {
    foreach($row as $key=>$value){
       $this->$key = $value;
    }
}
2 голосов
/ 22 октября 2009

Я думаю, вам нужно изменить эту строку:

$this->$key = $comment{$key};

с:

$this->$key = $comment[$key];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...