如何将MySQL单元格值放入PHP中以列名命名的变量中

时间:2009-08-07 07:02:56

标签: php mysql

此代码选择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 个答案:

答案 0 :(得分:3)

您可以使用extract()。但我会保留数组中的值。

..SELECT x,y,z FROM ..
while( false!==($rows=mysql_fetch_array($result, MYSQL_ASSOC)) ) {
    extract($rows);
    echo $x;
    ...
}

答案 1 :(得分:3)

我认为这就是你要找的东西

$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;
    }
}

答案 2 :(得分:2)

使用关联数组会不会更方便?这样你就可以在你描述时使用它们的列名来调用你的变量,而且你可以将它们捆绑在一个单元中,如果你需要将它们中的一个以上传递给任何函数或视图或其他任何单元,那就更好了。

所以我会使用mysql_fetch_assoc,就是这样。

答案 3 :(得分:1)

我不建议每行都有一个变量,我过去常常这样做以简化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>";
  :
}

答案 4 :(得分:0)

使用变量变量: 代码示例:

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

将输出'somevalue'。

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