From MySQL to CSS


From MySQL to CSS

我正在开发自己的CMS,并希望用户能够编写一些css(选择自己的背景图像,链接颜色,文本颜色等)。

我一直在寻找一种方法将CSS代码保存到MySQL表格中,然后当然将其从数据库中检索回.css文件。

我找到了这个 Turtorial它并没有真正显示如何使用数据库,但我认为最好开始这样做,然后从数据库而不是变量中回显出来。但我似乎没有让它起作用。这是到目前为止的代码:

主.php

<?php
header("Content-type: text/css; charset: UTF-8");
require '../app/start.php';
$css = $db->query("
    SELECT textColor, linkColor, background
    FROM css
    WHERE id=1
")->fetchAll(PDO::FETCH_ASSOC);
?>
body {
background: url('<?php echo $css['background']; ?>') no-repeat center center fixed;
}

开始.php

<?php
ini_set('display_errors', 'on');
define('APP_ROOT', __DIR__);
define('VIEW_ROOT', APP_ROOT . '/views');
define('BASE_URL', 'http://localhost:8080/mypage/public_html');
$db = new PDO('mysql:host=127.0.0.1;dbname=mycms', 'root', '');
require 'functions.php';

在背景列的数据库中,我只有一个随机的图像 url 以查看它是否有效 (http://all4desktop.com/data_images/original/4238051-background.jpg)

fetchAll 返回一个记录数组,这些记录是键/值对的数组。因此,$css['background']不存在。但是$css[0]['background']确实如此(前提是找到记录)。

但似乎您的表每个用户最多只有一条记录,因此您要做的是将 fetchAll 替换为 fetch。那么$css['background']就说得通了。

确保处理好没有找到记录的情况。在这种情况下,$css将被false,任何对数组$css的引用都会产生错误。