Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql结果作为PHP命名变量_Php_Mysql - Fatal编程技术网

Mysql结果作为PHP命名变量

Mysql结果作为PHP命名变量,php,mysql,Php,Mysql,我在mysql中有一个名为site\u settings的表,看起来像这样 我正在尝试将我的所有网站设置存储在mysql中,并希望将它们作为变量拉入PHP 我想从variable\u name列中提取所有值,作为PHP中的$variable name,并将它们的值设置为variable\u type列中的what $site\u name=烦恼 $registration\u已启用=False 这是我的密码: $sql = connect($database_address, $databas

我在mysql中有一个名为site\u settings的表,看起来像这样

我正在尝试将我的所有网站设置存储在mysql中,并希望将它们作为变量拉入PHP

我想从variable\u name列中提取所有值,作为PHP中的$variable name,并将它们的值设置为variable\u type列中的what

$site\u name=烦恼

$registration\u已启用=False

这是我的密码:

$sql = connect($database_address, $database_username, $database_password, $database);

$query = "SELECT * FROM site_settings";
$result = $sql->query($query);
//$row = $result->fetch_all(MYSQLI_ASSOC);

while($row = $result->fetch_assoc())
{
  $$row['variable_name'] = $row["variable_type"];
}

$arr = get_defined_vars();
print_r($arr);
我使用的最后两行来查看变量是否已创建,但我无法使其工作。到目前为止,我得到的最好结果是

    [Array] => Array
        (
            [variable_name] => Vexed
        )
谁能告诉我哪里出了问题


提前感谢任何能提供帮助的人。

您要复制的内容是

这通常被认为是一种不好的做法,因为它会使您的代码更难让读者理解或调试


我认为正在发生的是,当您调用
$$arr['variable\u name']
时,它实际上首先执行
$$arr
(在字符串转换后计算为$Array),然后尝试将['variable\u name']键赋值为$Array

我希望这一小小的修改能够奏效:

$sql=connect($database\u address,$database\u username,$database\u password,$database);
$query=“从站点设置中选择*”;
$result=$sql->query($query);
//$row=$result->fetch_all(MYSQLI_ASSOC);
而($row=$result->fetch_assoc())
{
$name=$row['variable_name'];
$$name=$row[“变量类型”];
}
$arr=get_defined_vars();
印刷费($arr);

编辑:我也要回应一下,以这种方式动态创建变量有点奇怪,这会使您的代码难以理解。

我建议您不要这样做,因为您可以非常轻松地删除现有变量。您必须确保从不创建与任何正在使用的变量命名相同的设置。你最好将它们读入
$config
数组或
stdClass
或类似的实例中。非常感谢你的帮助,同意这一点有点奇怪,我正在创建一个网站,在这里我可以检查和监视不同的web应用程序,监视一个网站中我需要存储大量值的所有内容,我的Mysql技能比我的php高得多,因此按照我的路线,有没有更好的方法来存储值?我正在尝试创建尽可能开放的站点,以便与其他人共享,或者在不同的项目上使用站点的基础;而($row=$result->fetch_assoc()){$settings[$row['variable_name']]]=$row['variable_value']];}之后在代码中,您可以通过$variables数组访问所有内容。e、 g.$settings['site\u name']=Vexed,$settings['registration\u enabled']=true,等等。您将在哪里写入此数据?我不确定“写入”数据是什么意思?长期持久性存储仍然会在数据库中,短期内存中的所有设置都会通过$settings字典进行访问。对不起,是的,我指的是长期持久性存储,所以存储在数据库中是可以的,但我担心的是如何将它们调用到php中,是否有地方我可以找到一些关于存储站点值的推荐方法的示例?