来自 css 中的 mySQL 变量不起作用


Variables from mySQL within css not working

我正在尝试使用表单在数据库中的表中设置颜色,然后将这些颜色调用到我的样式表中(style.php)

手动定义颜色变量可以:

<?php 
    header("Content-type: text/css"); 
    $color1  = '#cc0000';
?>
#thisdiv { background-color: <?php echo $color1; ?>; }

但这不会:

<?php 
    header("Content-type: text/css"); 
    $getSettings = mysqli_query($db, "SELECT * FROM settings WHERE setting_id = 1");
    $setting     = mysqli_fetch_assoc($getSettings);
    $color1      = $setting['setting_color1'];
?>
#thisdiv { background-color: <?php echo $color1; ?>; }

我的"设置"表如下所示:

setting_id | setting_color1 | setting_color2 | setting_color3
1          | #cc0000        | #000000        | #ffffff

我怎样才能让它正常工作?也许我做错了什么,或者我只是忽略了一些愚蠢的事情。任何帮助,不胜感激。

<?php 
    header("Content-type: text/css"); 
    $getSettings = mysqli_query($db, "SELECT * FROM settings WHERE setting_id = 1");
    // --------------------------^ and where is that defined?
    $setting     = mysqli_fetch_assoc($getSettings);
    $color1      = $setting['setting_color1'];
?>
#thisdiv { background-color: <?php echo $color1; ?>; }

您应该始终验证您的查询是否成功运行,这并不难。

<?php
  if($result = mysqli_query($db, 'SELECT * FROM table') != false){
    var_dump(mysqli_fetch_assoc($result));
    // hurray, query ran successfully.
    // Now execute the code that sets the variable.
  } else {
    // On fail, perhaps load from cache?
  }
?>

其次,在我看来,您的数据库结构是错误的。尝试类似下面的操作。

设置:

id (primary key)| key (varchar)| value (varchar)| type (varchar)| decryption (text) | theme (int)
1                 mycolor        AABBCC           hex             Background of we..   1
$sql = 'SELECT key, value, type FROM settings WHERE theme = 1'; // etc..

这样,您就可以更好地控制您的"主题"。然后,您可以同时获取结果并设置:$arr[$row['key']] = $row['value']