0

我有一个名为global_settings2 列的表(field, value)

我需要一种使每一行成为变量的方法

例如:

field = titlevalue = hello我需要:

$title = 'hello';

我试过这样做:

$global_sql="SELECT * from global_settings ";
$global_rs=mysql_query($global_sql,$conn) or die(mysql_error());
while($global_result=mysql_fetch_array($global_rs))
{
    $global_sql2="SELECT * from global_settings where field =  '".$global_result["field"]."' ";
    $global_rs2=mysql_query($global_sql2,$conn) or die(mysql_error());
    $global_result2=mysql_fetch_array($global_rs2);

    $global_result2["field"] = $global_result2["value"];
}

但这没有用 - 有什么想法吗?

4

2 回答 2

4

我强烈建议您不要从数据库中自动创建变量。您将在脚本的命名空间中乱扔可能无用的变量,并且可能会覆盖您想要分开的其他变量。照常做 - 将设置存储在数组中。

另外,除非我完全误读了您的代码,否则绝对没有理由进行子查询。一个简单的:

$settings = array();
$sql = "SELECT field, value FROM settings"
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_assoc($result)) {
   $settings[$row['field']] = $row['value'];
}

是您获取所有设置所需的全部内容。

于 2013-07-26T19:46:36.057 回答
0

此行不会创建以 的值命名的变量field

$global_result2["field"] = $global_result2["value"];

您可以创建一个数组变量,例如:

$array_of_results[ $global_result2["field"] ] = $global_result2["value"];

这样,您将拥有以下数组:

[ 'field' => 'value' ] 
于 2013-07-26T19:47:08.747 回答