2014-01-29 2 views
0

, если у меня есть метод HTTP GET URL, как этот http://www.mywebsite.com/page.php?q=Banana&NewYork где банан фрукты категория и NewYork является городом категория на моей базе данных MySQL, как я могу справиться с этим с просьбой тузда так что страницы .php покажет конкретный запрос URLPHP метод MYSQL GET и две категории

php 
$q= ($_GET['q']); 
$q = htmlspecialchars($q); 
$q = mysql_real_escape_string($q); 

mysql 
$req = $db->prepare ('SELECT * FROM tab WHERE ...'); 
$req->execute(); 

Спасибо всем.

+1

Что вы имеете в виду? Вы можете получить свою категорию «фрукты» с помощью $ _GET ['q'], как и вы, и вашей категорией города с $ _GET ['c'] ЕСЛИ вы исправите ошибку в URL-адресе и сделаете page.php? Q = Banana & c = NewYork –

ответ

2

Если ваш URL-адрес выглядит так: ...page.php?fruit=Banana&city=NewYork, вы можете использовать следующий пример кода.

Также вы должны использовать подготовленные операторы вместо mysql_real_escape_string.

<?php 

$fruit = $_GET['fruit']; 
$city = $_GET['city']; 

//mysql 
//Prepare the query and create a stmt 
$req = $db->prepare("SELECT * FROM table_name WHERE fruit = ? AND city = ?"); 

//$req contains now a prepared statement - binding the parameters 
//because at both "?" there are strings, there need to be "ss" 
//The value of $fruit will be placed at the first ? - $city will be placed at the second ? 
$req->bindParam("ss",$fruit,$city); 

//Execute the statement 
$req->execute(); 
?> 
+1

+1 Для использования подготовленных заявлений. В отличие от ответа @ user3052781, который я проголосовал из-за отсутствия безопасности и возможных SQL-инъекций. –

2

Чтобы сохранить себя разборе одну целую строку запроса, используйте два параметра в URL, такие как:

?fruit=Banana&city=NewYork 

Вы можете использовать $_GET['fruit'] и $_GET['city'] для получения этих значений.

Затем нужно правильно дезинфицировать вход, прежде чем положить их в запросе, я вижу, вы используете mysql_real_escape_string и mysql_query, но это не рекомендуется из-за устаревания на mysql_* функций.

Обратите внимание на mysqli_* или даже лучше, используя подготовленные заявления. Там есть много ресурсов, доступных на SO, и вы найдете намного больше в поисковых системах.

2
<?php 
$fruit = (isset($_GET['fruit'])) ? $_GET['fruit'] : ''; 
$city = (isset($_GET['city'])) ? $_GET['fruit'] : ''; 

$fruit = htmlspecialchars($fruit); 
$fruit = mysql_real_escape_string($fruit); 

$city = htmlspecialchars($city); 
$city = mysql_real_escape_string($city); 

//mysql 
$req = $db->prepare("SELECT * FROM tab WHERE fruit = '".$fruit."' AND city = '".$city."'"); 
$req->execute(); 

Но запрос URL должен быть http://www.mywebsite.com/page.php?fruit=Banana&city=NewYork

EDIT:

В самом начале, я проверяю, если $ _GET для фруктов и городов установлены, и если да, то получить их значение, если не put '' или пустую строку.

Затем я очистил ввод URL через htmlspecialchars и mysql_real_escape_string.

Затем мы готовим заявление sql, которое ищет фрукты и город, затем выполняется.

+0

Объясните, что вы делаете, вместо того, чтобы бросать «рабочий код» на кого-то. – Ryan

-1

ваш URL должен быть, как это page.php? Фруктового = Bannana & город = NewYork

после этого вы должны получить это две переменные, как

<?php 

$fruits = $_GET['fruit']; 


$city = $_GET['city']; 

$query = mysql_query("SELECT * from tablename where fruits = '".$fruits."' and city = '".$city."'"); 

$res = mysql_fetch_array($query); 


?> 

надеюсь, что это поможет :)

+0

Возможные SQL-инъекции с этим синтаксисом! –

Смежные вопросы