Нужна помощь в том, как преобразовать код PHP из объекта в процедурный? - PullRequest
0 голосов
/ 26 октября 2009

Я надеялся, что кто-нибудь может помочь мне преобразовать этот кусок кода из формы объекта в процедурную форму.

Таким образом, я могу иметь представление о том, что делать, когда я пытаюсь преобразовать больший кусок кода, который находится в виде объекта, из которого пришел этот фрагмент.

Я новичок.

$sql = "SELECT id, label, link_url, parent_id FROM dyn_menu ORDER BY parent_id, id ASC";
$items = mysql_query($sql);
while ($obj = mysql_fetch_object($items)) {
    if ($obj->parent_id == 0) {
        $parent_menu[$obj->id]['label'] = $obj->label;
        $parent_menu[$obj->id]['link'] = $obj->link_url;
    } else {
        $sub_menu[$obj->id]['parent'] = $obj->parent_id;
        $sub_menu[$obj->id]['label'] = $obj->label;
        $sub_menu[$obj->id]['link'] = $obj->link_url;
        $parent_menu[$obj->parent_id]['count']++;
    }
}
mysql_free_result($items);

Я знаю, что с этим кодом что-то не так?

$mysqli = new mysqli("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT id, label, link_url, parent_id FROM dyn_menu ORDER BY parent_id, id ASC");

if (!$dbc) {
    // There was an error...do something about it here...
    print mysqli_error();
}

while ($obj = mysql_fetch_assoc($dbc)) {
    if ($obj->parent_id == 0) {
        $parent_menu $obj['id']['label'] = $obj['label'];
        $parent_menu $obj['id']['link'] = $obj['link_url'];
    } else {
        $sub_menu $obj['id']['parent'] = $obj['parent_id'];
        $sub_menu $obj['id']['label'] = $obj['label'];
        $sub_menu $obj['id']['link'] = $obj['link_url'];
        $parent_menu $obj['parent_id']['count']++;
    }
}
mysql_free_result($dbc);

1 Ответ

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

Я совсем не уверен, чего ты пытаешься достичь. Вместо mysql_fetch_object вы хотите использовать что-то еще? mysql_fetch_assoc и mysql_fetch_array в значительной степени похожи. Вместо $obj->id вы бы написали $obj['id'].

Что касается использования mysql_result (выборка данных по одному столбцу за раз, по номеру столбца), то оно предположительно намного медленнее. Я не могу придумать вескую причину для его использования.

Обновление :
Ваш второй фрагмент кода использует сочетание трех различных способов доступа к MySQL: стиль объекта mysqli, процедурный стиль mysqli и «старое» расширение mysql (функции mysql_ *). Это не сработает.

На этой странице руководства PHP есть несколько достойных примеров. Они показывают как объектно-ориентированный, так и «процедурный» стиль.

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