谁能帮我解决这个问题。
我有一个名为 settings 的 MySQL 表,其中包含一些配置信息(布局如下(:
+----+--------------+---------------+
| id | setting | value |
+----+--------------+---------------+
| 2 | partemail | @example.com |
| 3 | version | 2.1 |
| 4 | altrowcolour | #ffeff0 |
+----+--------------+---------------+
现在我想在 PHP 中做的是一个
"SELECT * from settings"
但是让它循环并将值分配给一个变量,这样我就可以在整个脚本中调用它们,但将变量命名为它在设置列下的调用。
所以:
$partemail等于"@example.com">
$version等于"2.1">
$altrowcolour等于"#ffeff0">
所以我尝试了以下方法:
$sql = "SELECT * FROM settings";
$result = $mysqli->query($sql);
$config = array();
$result = mysql_query("SELECT * FROM config");
while ($row = mysql_fetch_assoc($result)) {
$config[$row['name']] = $row['value'];
}
但这并没有真正起作用。
任何人都可以帮忙,如果以上不是最佳实践,请道歉,我不是开发人员。
提前感谢任何帮助。
J
好吧,您检索了错误的列名。
$result = mysql_query("SELECT * FROM config");
$config = array();
while ($row = mysql_fetch_assoc($result)) {
$value = $row['value'];
$setting = $row['setting'];
$config[] = ['setting' => $setting, 'value' => $value];
}
编辑
仅使用 mysqli
$conn = new mysqli($servername, $username, $password, $dbname);
$sql = "SELECT * FROM config";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$value = $row['value'];
$setting = $row['setting'];
$config[] = ['setting' => $setting, 'value' => $value];
}
}
$conn->close();
您可以像以下方式回显内容:
echo $config[0]['setting'];
echo $config[0]['value'];
您的设置名称是"设置",而不是"名称">
$sql = "SELECT * FROM settings";
$result = $mysqli->query($sql);
while ($row = mysql_fetch_assoc($result)) {
$config[$row['setting']] = $row['value'];
}
其他人的最终代码是:
$sql3 = "SELECT * FROM settings";
$result3 = $mysqli->query($sql3);
if ($result3->num_rows > 0) {
while ($row3 = $result3->fetch_assoc()){
$config[$row3['setting']]=$row3['value'];
}
}
echo $config['version'];
echo "<br>";
echo $config['partemail'];
echo "<br>";
echo $config['altrowcolour'];