【问题标题】:how do i create a unique php page for each row in a mysql database如何为mysql数据库中的每一行创建一个唯一的php页面
【发布时间】:2011-03-03 01:24:45
【问题描述】:

我有一个用 php 连接的 mysql 数据库。但是,我希望数据库中的每一行都是唯一的页面。谁能提供一些关于这将如何工作的概述。将数据库的结果显示为完整的表或选定的行对我来说很简单,但我很难从唯一的行创建单个页面。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    好的,首先你不能,否则很难为表格的每一行创建单独的页面。您必须使用一页并使用 $_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 并检索该行/页面的内容。

    【讨论】:

    • 那么 SE 是如何做到的呢?注意这个页面是http://stackoverflow.com/.../.../how-do-...-in-a-mysql-database。而且它没有?id=1
    • @DantheMan SE 使用 URL 解析来做同样的事情。 Henrik 给你的是一个过于简单的例子。请注意您的 URL 中有questions/5175588/。 URL 解析器忽略其他文本(保留在搜索引擎排名中)并读取“问题”和“5175588”以了解它必须加载 ID/行 ID:5175588 的问题
    【解决方案2】:

    在查询字符串中添加一个与数据库中的 id 匹配的 id。

    $sql = 'SELECT `content` FROM `articles` WHERE `id` = ' . (int) $_GET['id'];
    

    【讨论】:

      【解决方案3】:

      这是一个示例,说明我如何使用 URL 为属性数据库中的每一行显示不同的页面。

      我在下面展示了我的搜索机制,但它可以使用诸如/search/id/123 之类的 URL 来显示 id:123 的属性。 $app-&gt;Property-&gt;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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多