Mysql结果作为PHP命名变量
我在mysql中有一个名为site\u settings的表,看起来像这样 我正在尝试将我的所有网站设置存储在mysql中,并希望将它们作为变量拉入PHP 我想从variable\u name列中提取所有值,作为PHP中的$variable name,并将它们的值设置为variable\u type列中的what $site\u name=烦恼 $registration\u已启用=False 这是我的密码: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
$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中,是否有地方我可以找到一些关于存储站点值的推荐方法的示例?