2015-08-27 2 views
1

Привет здесь Я пытаюсь получить значения из базы данных с помощью запроса на моей странице php. Я получаю значения от базы данных до выпадающего списка в цикле, используя php.Запрос Mysql, не работающий с запросом с пространством

вот 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> 

эти значения будут перенаправлять на страницу под названием продукта по-category.php с параметром в URL. параметр будет использоваться для извлечения значений из базы данных

, когда я передать параметр для экс sports, я могу получить результаты, но когда я прохожу tool & hardware в качестве параметра я не могу получить результаты из-за пространства и Я вижу tool%20&%20hardware в URL как параметр.

, как я могу решить эту

здесь есть запрос я использую

"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']; 
+0

В запросе не используется параметр URL-адреса, так как это может измениться? – Barmar

+0

Где ваша 'where clause' в вашем запросе для сравнения вашей стоимости? – Saty

+0

Используйте номер категории или более строгий идентификатор. –

ответ

2

Поскольку вы обращаетесь непосредственно $_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>"; 
+0

Спасибо barmar ...работаю хорошо для меня ... –

0

Вы должны использовать 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."'";