我正在尝试使用通过URL传递的变量来编写查询,问题是很多项目名称包含'或+等字符,它们没有通过URL正确传递,而那些特殊的字符被忽略(虽然我检查过并且看不到它们被保留)不管怎样,为了解决这个问题,我使用PHP函数rawurlencode()和rawurldecode()将值作为编码字符串传递,并在接收端我将函数用于解码后的字符串。这是有效的,并且给了我在数据库中搜索所需的值,但是在写这样的查询时是这样的:
$name = rawurldecode($_GET["name"]);
$sql = "SELECT name, address, phone_number, hours_weekday, hours_weekend, description, email, food, pool, tv, dancing, late
FROM pubs WHERE name LIKE '" . $name . "'";
如果这个名字像Darby那样,'之后为什么在语句中充当字符串的结尾,那么我想要做的是,如果字符串包含字符',则将其替换为\'以逃避它。有谁知道怎么做或者有可能吗?
谢谢!
答案 0 :(得分:1)
假设你的mysqli连接被称为$mysqli
,那么
$name = $mysqli->real_escape_string($name);
在将$name
添加到SQL查询字符串之前。