Mysql查询不工作,查询有空间


Mysql query not working with query having space

你好,我试图在我的php页面中使用查询从数据库获取值。我正在获取值从数据库到下拉循环使用php。

下面是输出

的HTML
<li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Products <span class="caret"></span></a>
          <ul class="dropdown-menu">            
            <li><a href='product-by-category.php?Aviation'>Aviation</a></li><li><a href='product-by-category.php?beauty & personal care'>beauty & personal care</a></li><li><a href='product-by-category.php?Documentary'>Documentary</a></li><li><a href='product-by-category.php?gaming'>gaming</a></li><li><a href='product-by-category.php?health and fitness'>health and fitness</a></li><li><a href='product-by-category.php?health care'>health care</a></li><li><a href='product-by-category.php?hobbies '>hobbies </a></li><li><a href='product-by-category.php?home '>home </a></li><li><a href='product-by-category.php?misc'>misc</a></li><li><a href='product-by-category.php?mobile accessories '>mobile accessories </a></li><li><a href='product-by-category.php?mobiles'>mobiles</a></li><li><a href='product-by-category.php?Music'>Music</a></li><li><a href='product-by-category.php?office '>office </a></li><li><a href='product-by-category.php?photography'>photography</a></li><li><a href='product-by-category.php?sports'>sports</a></li><li><a href='product-by-category.php?tool & hardware '>tool & hardware </a></li>          </ul>
        </li>

这些值将重定向到名为product-by-category.php的页面,URL中有参数。参数将用于从数据库

中获取值。

当我传递e.x sports的参数时,我能够获得结果,但是当我传递tool & hardware作为参数时,由于空间,我无法获得结果,我在URL中看到tool%20&%20hardware作为参数。

我该如何解决这个问题

这里是查询,我使用

"SELECT product_id, product_name, product_price, product_image_URL FROM product_list WHERE product_publish_status='0' and product_category ='$product_category'";

这里$product_category是从url

获取的参数
$product_category = $_SERVER['QUERY_STRING'];

由于您直接访问$_SERVER['QUERY_STRING'],您需要进行URL解码:

$product_category = urldecode($_SERVER['QUERY_STRING']);

但是如果你使用正常的查询参数会更好,例如

product-by-category.php?category=Aviation

然后你可以用:

$product_category = $_GET['category'];

参数输入$_GET后自动解码。

同样,创建url的代码应该使用urlencode。否则,如果类别中有一些特殊字符,如%+,则会出现问题。它应该是这样的:

echo "<li><a href='product-by-category.php?" . urlencode($row['category']) . "'>Aviation</a></li>";

您应该使用urldecode来解码查询中的编码字符串:

这里的链接应该是:

echo "<li><a href='product-by-category.php?category=" . urlencode(Aviation) . "'>Aviation</a></li>";

您可以使用$_GET php全局变量访问它。

$product_category = $_GET['category'];
$product_category = mysqli_real_escape_string($product_category); // Addition
"SELECT product_id, product_name, product_price, product_image_URL FROM product_list WHERE product_publish_status='0' and product_category ='".$product_category."'";