我有一个与php连接的mysql数据库。但是,我希望数据库中的每一行都是唯一的页面。任何人都可以提供一些关于如何工作的概述。我很容易将数据库的结果显示为完整的表或选定的行,但是我很难从唯一的行创建单独的页面。
答案 0 :(得分:10)
好吧,首先你不能,或者很难为你的每一行创建单独的页面。您必须使用一个页面并使用$ _GET全局来更改您应该查看的站点。
例如site.php?id=1
site.php看起来大概是这样的
<?php
$connect = mysql_connect('host', 'user', 'pass');
$select_db = mysql_select_db('database_name');
$id = mysql_real_escape_string($_GET['id']);
//Remove LIMIT 1 to show/do this to all results.
$query = 'SELECT `content` FROM `pages` WHERE `id` = '.$id.' LIMIT 1';
$result = mysql_query($query);
$row = mysql_fetch_array($result);
// Echo page content
echo $row['content'];
?>
通过它,您可以请求任何您想要的ID并检索该行/页面的内容。
答案 1 :(得分:6)
在查询字符串中添加一个与数据库中的id匹配的ID。
$sql = 'SELECT `content` FROM `articles` WHERE `id` = ' . (int) $_GET['id'];
答案 2 :(得分:1)
以下是我如何使用URL为Property数据库中的每一行显示不同页面的示例。
我在下面展示了我的搜索机制,但是可以使用/search/id/123
这样的网址来显示ID为123的属性。 $app->Property->search($array)
是执行MySQL代码的地方。此脚本导出JSON对象,该对象由Ajax加载并在另一端由JavaScript显示。您不必导出JSON,也可以加载PHP / HTML模板并在PHP中导出页面。
<?php
/*
* Controller
* Decodes query string and takes appropriate action
*/
$query = explode('/', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
$qs = array();
foreach ($query as $key=>$value) $qs[$key] = urldecode(htmlspecialchars($value));
array_shift($qs); #clear blank first element
# Parse URLs with the following format:
# /search/{$field1}/{$value1}/{$field2}/{$value2}/.../{$fieldN}/{$valueN}
switch ($val = array_shift($qs)) {
case "search":
$params = array(); # query array
$field = true; # switch between field or value
while (!is_null($val=array_shift($qs))) {
if ($field) $params[-1] = $val;
else $params[$params[-1]] = urldecode($val);
$field = !$field;
}
unset($params[-1]);
$result = $app->Property->search($params);
header('Content-type: application/json');
echo json_encode($result, JSON_FORCE_OBJECT);
exit; #don't load template after exporting JSON object
break;
...
此脚本与.htaccess
脚本一起使用,该脚本将所有请求重定向到我的index.php
文件。 index.php在某个时刻加载了这个controller.php
文件,该文件处理URL并根据URL加载页面。
这是.htaccess代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>