Как поместить значения ячеек MySQL в переменные с именами столбцов в PHP - PullRequest
1 голос
/ 07 августа 2009

Этот код выбирает значения ячеек в MySQL и вручную добавляет их в переменные PHP:

$sql = "SELECT * FROM table LIMIT 0,1";
$result = mysql_query($sql);
while($rows = mysql_fetch_array($result)) {
    $col1 = $rows['col1'];
    $col2 = $rows['col2'];
    $col3 = $rows['col3'];
    .....
}

Это очевидно неуправляемо для нескольких и больших таблиц.

Какой лучший способ автоматически генерировать имена и значения переменных без ручного ввода всех имен столбцов во всех таблицах?

Ответы [ 5 ]

3 голосов
/ 07 августа 2009

Я думаю, это то, что вы ищете

$sql = "SELECT * FROM table LIMIT 0,1";
$result = mysql_query($sql);
while ($rows = mysql_fetch_array($result, MYSQL_ASSOC)) {
    foreach ($rows as $key => $value) {
        $$key = $value;
    }
}
3 голосов
/ 07 августа 2009

Вы можете использовать extract () для этого. Но я бы сохранил значения в массиве.

..SELECT x,y,z FROM ..
while( false!==($rows=mysql_fetch_array($result, MYSQL_ASSOC)) ) {
    extract($rows);
    echo $x;
    ...
}
2 голосов
/ 07 августа 2009

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

поэтому я бы использовал mysql_fetch_assoc и все.

1 голос
/ 07 августа 2009

Я не рекомендую иметь переменную для каждой строки, я делал то же самое для упрощения написания HTML позже:

echo "<tr><td>$name</td><td>$count</td></tr>";

Вместо:

echo "<tr><td>{$row['name']}</td><td>{$row['count']}</td></tr>";

Пока я не нашел лучший и более читаемый способ, делайте это, используя mysql_fetch_object

while ($row = mysql_fetch_object($result)) {
  :
  echo "<tr><td>{$row->name}</td><td>{$row->count}</td></tr>";
  :
}
0 голосов
/ 07 августа 2009

Используйте переменные переменные: Пример кода:

$a = 'col1';
$$a = 'somevalue';
echo $col1;

выведет 'somevalue'.

http://www.php.net/manual/en/language.variables.variable.php

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