gpt4 book ai didi

mysql_real_escape_string 问题

转载 作者:太空宇宙 更新时间:2023-11-03 10:27:45 25 4
gpt4 key购买 nike

如果我输入

'

在我的搜索栏中,我收到一个 mysql 错误,因为“刺痛”没有被转义——它认为。

但是我之所以无法转义,是因为我认为它目前不是一个字符串。

搜索框使用 ajax 动态生成搜索结果,就像我输入的那样,它找到了我收到错误的结果:

    You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near '%' OR Location
LIKE '%'%' OR Map LIKE '%'%' LIMIT 0, 16' at line 2

这是 mysql 查询:

<?php 
if($_POST['q']!=""){
include $_SERVER['DOCUMENT_ROOT'] . "/include/datebasecon.php";
$result = mysql_query("
SELECT id, Name, Location, Map
FROM Accommodation WHERE Name LIKE '%".$_POST['q']."%' OR Location LIKE '%".$_POST['q']."%' OR Map LIKE '%".$_POST['q']."%' LIMIT 0, 16")
or die(mysql_error());
$output = "";
while($row = mysql_fetch_array($result)){
$N = preg_replace("/(".$_POST['q'].")/i","<span>$1</span>",$row['Name']);
$L = preg_replace("/(".$_POST['q'].")/i","<span>$1</span>",$row['Location']);
$M = preg_replace("/(".$_POST['q'].")/i","<span>$1</span>",$row['Map']);
$output .= "<p>".$N." - ".$L."</p>";
}

print $output;

}
?>

我是否可以在发布查询后修复此问题?

最佳答案

magic_quotes_gpc 关闭时(它应该关闭!),$_POST['q'] 只是字符串 ',因为只有一个字符。这就是为什么它会像这样出现在您的 SQL 代码中:

%' OR Location LIKE '%'%' OR Map LIKE '%'%' LIMIT 0, 16

错误发生在 '%'%',因为 LIKE 字符串被提前终止。

你可以在 $_POST['q'] 上使用 mysql_real_escape_string() 它会被转义:

$q = mysql_real_escape_string($_POST['q']);
$result = mysql_query("
SELECT id, Name, Location, Map
FROM Accommodation WHERE Name LIKE '%".$q."%' OR Location LIKE '%".$q."%' OR Map LIKE '%".$q."%' LIMIT 0, 16")
or die(mysql_error());

关于mysql_real_escape_string 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3794022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com