【问题标题】:Select value from mysql equal to URL从 mysql 中选择等于 URL 的值
【发布时间】:2020-11-02 01:08:24
【问题描述】:

有没有办法执行 MySQL 查询以选择包含 URL 一部分值的记录?

例如以下页面:http://example.com/select-this-one 在 mysql 中,我存储了一个包含 URL 部分的值。在这种情况下,“选择这个”。

我怎样才能从mysql返回只在页面http://example.com/select-this-one包含“select-this-one”的记录?

我尝试了以下代码,但不起作用:

$uri = explode("/", parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)); //PARSE THE URL
$value = $uri[1]; //SELECT FIRST SEGMENT OF THE URL

$query = "SELECT * FROM table WHERE ID = '0' AND record = '".$value."' ORDER BY ID DESC";

【问题讨论】:

  • 怎么不工作?
  • 您确定$value 包含您认为应该包含的内容吗?
  • 做一些基本的调试:print_r($uri) 告诉你什么?还是echo $value?它与您的数据库中的完全相同吗?
  • echo $value 返回:select-this-one.php。它还返回 URL 的一部分,但不在查询中

标签: php mysql


【解决方案1】:

您的$_SERVER['REQUEST_URI'] 被重写规则覆盖,请看这里: Apache rewrite - get original URL in PHP

【讨论】:

    【解决方案2】:

    如果您的服务器启用了 mod_rewrite,只需添加一个 '.htaccess' 文件与

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^.*$ /index.php [L,QSA]
    

    那么您拥有的代码应该可以工作。 (假设在 index.php 文件中)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2012-03-02
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多