在bluetronix CMS中连接PHP和MySQL
在本教程中,你将创建一个自己的数据库表并将其与CMS页面连接。通过实际示例,你将学习SQL命令INSERT、REPLACE、SELECT和UPDATE,并了解如何通过HTML占位符在网页上输出数据库值。
创建示例页面
在本教程中,你首先需要创建一个新的示例页面.
例如:
PHP MySQL示例
页面可以最初完全为空.
然后在普通HTML编辑器中打开该页面,并插入任何页面部分。此HTML区域稍后将作为从数据库加载的数据的模板.
创建数据库表
在你可以存储数据之前,你需要一个自己的数据库表.
为此,请打开:
数据库 → 新建表
在此示例中,我们使用一个包含ID、日期、标题、描述和图像列的表.
ID包含记录的唯一ID。日期存储日期和时间。标题包含标题,描述包含更长的描述文本,而图像包含图像名称.
表、列和变量名称在开发者教程中应始终使用英文.
打开PHP代码
表创建后,返回到你的示例页面.
在那里打开:
PHP代码
从此区域你可以直接访问数据库.
使用INSERT或REPLACE存储数据
在第一个示例中,你将在之前创建的数据库表中存储一条记录.
首先设置所需的PHP变量。
示例:
$ID = 1;
$Date = date("Y-m-d H:i:s");
$Title = "My Title";
$Description = "My Description";
$Image = "my-image.jpg";
这些值可以随后使用MySQL预处理语句进行保存。
在数据库访问中,你应该始终使用预处理语句。这样,值会与实际的SQL命令分开处理。
使用REPLACE的示例:
$stmt = $mysqli->prepare("REPLACE INTO ExampleTable (ID, `Date`, Title, Description, Image) VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param("issss", $ID, $Date, $Title, $Description, $Image);
$stmt->execute();

然后访问该页面一次。
然后打开:
数据库 → 显示
在那里应该可以看到新生成的数据记录。
INSERT和REPLACE之间的区别
INSERT添加一条新的数据记录。
如果已经存在具有相同唯一ID或同一主键的数据记录,则普通的INSERT可能会引发重复键错误。
REPLACE可以用于需要用相同唯一ID替换现有数据记录的情况。
对于具有固定ID的测试示例,REPLACE通常更实用,因为可以多次访问该页面。
使用SELECT读取数据
在下一步中,你将再次从数据库中读取保存的数据记录。
示例:
$stmt = $mysqli->prepare("SELECT `Date`, Title, Description, Image FROM ExampleTable WHERE ID = ?");
$stmt->bind_param("i", $ID);
$stmt->execute();
$result = $stmt->get_result();
if($row = $result->fetch_assoc()) {
$Date = $row["Date"];
$Title = $row["Title"];
$Description = $row["Description"];
$Image = $row["Image"];
}
提取的值随后将位于变量$Date、$Title、$Description和$Image中。
连接数据库和$LayoutHTML
全局CMS变量$LayoutHTML在渲染过程中包含当前生成的页面HTML.
因此,你可以用MySQL表中的数据替换HTML代码中的自定义占位符。
在HTML代码中设置占位符
再次打开你的示例页面的HTML代码.
你现在可以用自定义占位符替换之前插入的页面部分的内容。
例如:
__MyDate__
__MyTitle__
__MyDescription__
__MyImage__
一个简化的HTML示例:
<section>
<div class="container">
<img src="__MyImage__" alt="">
<small>__MyDate__</small>
<h2>__MyTitle__</h2>
<p>__MyDescription__</p>
</div>
</section>

对于这个第一个MySQL示例,可以首先删除现有的翻译标记。这样,更容易识别哪些内容是直接通过PHP和MySQL替换的。
在布局中插入数据库值
在使用SELECT加载数据后,替换$LayoutHTML中的占位符。
示例:
$LayoutHTML = str_replace("__MyDate__",$Date,$LayoutHTML);
$LayoutHTML = str_replace("__MyTitle__",$Title,$LayoutHTML);
$LayoutHTML = str_replace("__MyDescription__",$Description,$LayoutHTML);
$LayoutHTML = str_replace("__MyImage__",$Image,$LayoutHTML);
流程为:
MySQL数据库 → SELECT → PHP变量 → str_replace() → $LayoutHTML → 完成的网站

数据库的内容将直接显示在现有的HTML布局中。
直接通过数据库测试更改
打开:
数据库 → 显示
然后编辑现有的数据记录。
例如,你可以将标题从 My Title 改为 New My Title。
你也可以通过相应的 BX-Image-Button 更改图像。
在保存之后,重新加载网页,修改后的数据将直接显示在页面布局中。
这样,形成了直接的连接:
数据库 → PHP → $LayoutHTML → 网页
使用UPDATE更改数据
使用 UPDATE 你可以直接通过 PHP 修改已存在的数据记录。
在这里,通过条件设置要修改的数据记录。
在执行更新后,你可以再次用 SELECT 加载数据,并通过 $LayoutHTML 在页面上显示。
总结
通过 PHP 和 MySQL,你可以在 bluetronix CMS 中存储、读取和修改数据。
INSERT 或 REPLACE 用于保存数据,SELECT 用于读取数据,UPDATE 用于修改现有数据记录。
通过 $LayoutHTML,你可以将加载的数据直接插入现有的 HTML 结构中。
这可以将数据库内容干净地与 CMS 页面 HTML 布局连接起来。
常见问题
客户常问我们的问题
我需要什么才能进行这个 PHP 和 MySQL 教程?
你需要一个开发者访问权限到 bluetronix CMS。此外,你还应该了解 CMS 网站渲染过程是如何工作的,以及变量 $LayoutHTML 的作用。
我在哪里创建新的数据库表?
在 CMS 中打开 数据库 → 新表 部分。
示例中使用了哪些列?
在教程中使用了 ID、Date、Title、Description 和 Image 列。
为什么我应该使用预处理语句?
预处理语句将传递的值与实际的 SQL 命令分开,因此是为数据库访问而设计的。
INSERT 和 REPLACE 有什么区别?
INSERT 添加一条新的数据记录。REPLACE 可以用相同的唯一 ID 或主键替换现有的数据记录。
我如何从数据库中读取数据?
你需要使用 SELECT 命令。随后,可以将加载的值存储在 PHP 变量中,例如 $Title、$Description 或 $Image。
MySQL 数据如何转入页面的 HTML 中?
首先在 HTML 代码中设置自己的占位符,然后在 $LayoutHTML 中通过 str_replace() 将其替换为加载的数据库值。
我如何检查数据库与网站之间的连接是否正常?
打开 数据库 → 显示,更改一个已有的数据记录,然后重新加载网站。新值应该会立即在页面布局中显示。
UPDATE 用于什么?
使用 UPDATE 可以通过 PHP 直接修改已有的数据记录。
我可以在页面布局中使用数据库中的图片吗?
可以。在示例中,图片值被存储在变量 $Image 中,并通过一个名为 __MyImage__ 的占位符在 $LayoutHTML 中使用。