如何从动态url请求php检查数据

eblbsuwk  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(243)

我正在练习创建cms。我将所有url请求设置为 index.php . 我把请求的数据 $path 变量。
.htaccess访问

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^(.*)$ index.php?path=$1 [QSA,L]

所以,我得到了 $path 做一个 sql 请求到 echo 页面上的数据。我的 sql 表有2列 data 以及 url . 所以,我的代码是:

$sql = "SELECT * FROM post where url='" . $path . "'";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
if(is_array($row)) {
    echo $row["data"];
}

但问题是,当我创建类别时,我想我必须添加一个新列 ctg 所以我做了。现在当我收到这样的请求 localhost/php/how-to-make-a-page ,那么我想我必须这样做:

if (strpos($path, '/') !== false) {
        $array = explode("/", $path);
        $url = end($array);
        $sql = "SELECT * FROM post where url='" . $url . "'";
    }

但我对这种想法很幼稚。因为 localhost/php/how-to-make-a-page 以及 localhost/Anything/how-to-make-a-page 给我同样的结果。有人能解释一下如何处理这个类型的请求吗?

fafcakar

fafcakar1#

我的建议是,你从一个易于学习的框架开始,它是如何“codeigner”的,而你去记录你会明白什么是路由,控制器,模型,等等。现在关于您的代码,您没有分组类别,因为您应该有这样一个语法,“category/php/how-to-make-a-page”和这样一个查询:“select*from post where category=“php”和url=“how-to-make-a-page”,php示例是:

<?php
 $parts_of_url = explode('/', $path);
 if($parts_of_url[0] === 'category') {
   $sql = "SELECT * FROM post where category_id= :category_id AND url= :url";
 }
?>

请在此处检查sql语句中的参数http://php.net/manual/en/pdostatement.bindparam.php
但我会坚持,如果你想学习好如何路由工作,查询与数据库,驱动程序,窗体验证。好吧,你应该参考我前面提到的框架。

相关问题