我正在开发自己的CMS,使用对象PHP和Oracle作为数据库。
我的页面正在运行一个index.php文件,并包含我存储函数的其他文件。
现在我考虑将所有页面内容存储在数据库中,但是我准备了使用分页和排序功能打印表格的函数。因此,当我需要将包含任何文本的表格包含在存储在数据库中的帖子中时,我需要使用 eval()函数。
我听说 eval()函数可以执行存储在我的Oracle数据库中的所有函数,但出于某种原因,这不是推荐的解决方案。
在不使用eval()的情况下解决此问题的最佳方法是什么?
以下是我使用的代码部分:
打印内容的PHP代码:
public static function pageContent(){
if (isset($_GET['pid'])){
$pid = $_GET['pid']
$pQuery = "SELECT pcontent FROM page_base where pid = $pid";
$connect = $_SESSION['connection'];
$stid = oci_parse($connect, $pQuery);
oci_execute($stid);
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
foreach($row as $item){
echo eval($item);
}
}
}
}
PHP功能打印表(简化)
protected static function writeTable($argument, $color, $rpp){
$connect = $_SESSION['connection'];
$argument = Content::addSort($argument);
$stid = oci_parse($connect, $argument);
oci_execute($stid);
$ncols = oci_num_fields($stid);
?>
<div class="widget-table-title
<?php echo $color ?>
">
<?php
Content::tableTitles($stid, $ncols);
?>
</div>
<div class="widget-table bg-white">
<?php
Content::fetchPage($stid, $rpp, $color);
?>
</div>
<?php
Content::paginationLinks(oci_num_rows($stid),$rpp, $color);
}
SQL表
create table page_base(
pid integer primary key not null,
ptitle varchar2(30) not null,
pcontent varchar2(2000) not null
);
查看作者的SQL查询
class Queries{
$showAuthors = "SELECT NAME, AGE, ADDRESS FROM AUTHORS";
...
}
添加网页内容的SQL查询
insert into page_base values(page_base.nextval, 'Home Page',
'?>Some text. <?php Content::writeTable(Queries::$showAuthors,"bg-
yellowplane", 50);');
查询:: $ showAuthors是内容SQL查询的类中的静态变量。
bg-yellowplane只是CSS中的颜色选择器