2016-01-26 4 views
0

Я пытаюсь получить информацию из базы данных и работает для простых имен, но не работает для более сложных задач. Пример работает /?item=Chroma%20Case, но не работает на /?item=★%20Bayonet%20|%20Blue%20Steel%20(Battle-Scarred) эхо ничего не показываетПолучение информации из базы данных не работает свойство

<?php 
$item = $_GET['item']; 
$item = str_replace("\"", "", $item); 
$item = str_replace("\'", "", $item); 
$item = str_replace(" ", "%20", $item); 
$item = str_replace("\\", "", $item); 


$db = new mysqli('localhost', 'root', '', 'csgo'); 


$sql = "SELECT cost FROM `items` WHERE `name` = '$item'"; 

if(!$result = $db->query($sql)){ 
    die('There was an error running the query [' . $db->error . ']'); 
} 
while($row = $result->fetch_assoc()){ 
    echo $row['cost']; 
} 


?> 
+2

Вам необходимо параметризовать эти запросы до небольшого количества бобби столы приезжают в гости. http://bobby-tables.com/ –

+2

Почему вы разбираете URL-адрес таким образом? Вы должны использовать http://php.net/manual/en/function.parse-url.php –

ответ

1

вашего str_replace изменить значение $ _GET, так что вы должны удалить эти строки:

$item = str_replace("\"", "", $item); 
$item = str_replace("\'", "", $item); 
$item = str_replace(" ", "%20", $item); 
$item = str_replace("\\", "", $item); 

И вы можете использовать urlencode() получить свой адрес paramer со специальными символами, поэтому ваш код должен быть:

<?php 
$item = urlencode($_GET['item']); 

$db = new mysqli('localhost', 'root', '', 'csgo'); 
$sql = "SELECT cost FROM `items` WHERE `name` = '$item'"; 
if(!$result = $db->query($sql)){ 
    die('There was an error running the query [' . $db->error . ']'); 
} 
while($row = $result->fetch_assoc()){ 
    echo $row['cost']; 
} 
?> 
+0

, все еще не работая с ★ по имени – R3ason

+0

Хорошо, я исправлю это – R3ason

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