Доступ к объектному атрибуту с переменной?

#php #sql

#php #sql

Вопрос:

Не уверен, что заголовок — это именно то, что я хочу сделать. Ниже приведен мой рабочий код.

         mysql_select_db($_POST[database]);
        $table_list = mysql_query('SHOW TABLES');
        $tables_in_db = "Tables_in_" . $_POST[database];
        while ($row = mysql_fetch_object($table_list)) {
            echo "<tr>
                    <td class='pageBody'>" . $row->$tables_in_db . "</td>
                  </tr>";
        }
  

Возможно ли каким-либо образом удалить строку 4 и получить доступ к атрибуту объекта с помощью $row->Tables_in_{$_POST[database]}? Я пробовал несколько разных способов, включая различное размещение кавычек и фигурных скобок, мне пришлось прибегнуть к присвоению всего атрибута переменной $tables_in_db, а затем использовать эту переменную для доступа к атрибуту.

Комментарии:

1. mysql_select_db($_POST[‘database’]); просто напрашивается на использование

Ответ №1:

У вас правильная идея, просто неправильный синтаксис. Свойства переменной могут принимать форму одной переменной ( $a->$b ) или какого-либо другого выражения, которое возвращает строку, содержащую имя свойства ( $a->{'b'} ).

 $row->{'Tables_in_' . $_POST['database']}
  

Кроме того: при использовании одной из других mysql_fetch_* функций знание имени столбца станет неактуальным. Например, mysql_fetch_array() или mysql_fetch_row() и доступ к $row[0] элементу.