【问题标题】:php cannot GET mysql results from url with special characters or spaces?php 无法从带有特殊字符或空格的 url 获取 mysql 结果?
【发布时间】:2014-07-16 13:15:25
【问题描述】:

我已经尝试解决此问题 2 天了,但无济于事。

基本上,我正在根据从上一页传递的 URL 中的任何内容尝试来自 mysql 的 $_GET 结果。

网址是这样的:http://mydomain.com/manufacturer/abc

为了实现这个 URL,我使用 .htaccess 工作正常。

但如果 url 有 empty space- 或任何其他特殊字符,我的 php 文件将不会从 mysql 数据库中获取结果。

所以这行不通:

http://mydomain.com/manufacturer/a-b-c

否则这将不起作用:

http://mydomain.com/manufacturer/a b c

也不是这样:

http://mydomain.com/manufacturer/a+bc

等等等等……

我正在使用 smarty,到目前为止这是一个非常简单的过程,但现在已经到了这个阶段,事实证明它有点困难。

我的 php 文件如下所示:

if (isset($_GET['man'])) {
$man = $_GET['man'];
if( ! $stmt = $db_conx->prepare("SELECT id, man, product_name FROM `$TabelName` WHERE `man` = ?") ) {
  die( $db_conx->error );
}

$stmt->bind_param('s', $man);
if ( ! $stmt->execute() ) {
  die( $stmt->error );
}
$stmt->bind_result($id, $man, $product_name);
$stmt->store_result();

while($stmt->fetch()) {
    $value[] = array('id'=>$id, 'man'=>$man, 'product_name'=>$product_name);
}
}


// Assign this array to smarty...
$smarty->assign('man', $value);



// Assign this array to smarty...
$smarty->assign('$man', $value);

}

这是我的 htaccess 文件:

RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^manufacturer/([a-zA-Z0-9]+)$ manufacturers.php?manu=$1
RewriteRule ^manufacturer/([a-zA-Z0-9]+)/$ manufacturers.php?manu=$1

我尝试了urlencodeurldecode 各种可能的方法,但似乎没有任何效果。

有人可以就这个问题提出建议吗?

提前致谢

【问题讨论】:

  • 您的 RewriteRule 禁止除字母和数字之外的任何内容。
  • $_GET['man'] 但在您的 .htaccess 中有 ?manu=$1

标签: php mysql .htaccess


【解决方案1】:

试试这个:

RewriteRule ^manufacturer/(.*)/?$ manufacturers.php?manu=$1

注意/?,你不需要第二条规则,这个东西为你做。

【讨论】:

  • 您的回答正是我所需要的。非常感谢。
【解决方案2】:

RewriteRule ^manufacturer/(.+)/?$ manufacturers.php?manu=$1

这意味着在制造商/匹配后一次或多次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    相关资源
    最近更新 更多