从数据库获取信息不起作用属性


Getting information from database don't work property

我正在尝试从数据库中获取信息,它适用于简单名称,但不适用于更复杂的名称。示例适用于/?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'];
}

?>

你的str_replace更改你的$_GET值,所以你应该删除以下行:

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

您可以使用urlencode()来接收带有特殊字符的 url 参数,因此您的代码应该是:

<?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'];
}
?>