-1

我有以下字符串,我必须将其传递给 mysql_query() 函数。当有人尝试在我的站点中搜索某些数据时,会动态生成此刺痛。现在的问题是每个单词后面没有结束引号。

and purpose="Buy and property_type="Home and property_nature="Residential and city =" Lahore"

我希望这个字符串采用这种形式:

and purpose="Buy" and property_type="Home" and property_nature="Residential" and city =" Lahore"

谢谢

4

3 回答 3

0

如果你想使用旧的 API,解决方案是mysql_real_escape_string。不过,我建议查看更新的方法和变量绑定。

于 2013-09-24T09:12:45.207 回答
0

使用PDO和准备好的语句。也许是这样的:


$stmt = $db->prepare('SELECT ... WHERE ... AND purpose = :purpose AND property_type = :property_type AND property_nature = :property_nature AND city = :city');

$stmt->bindParam(':purpose',         $_POST[...]);
$stmt->bindParam(':property_type',   $_POST[...]);
$stmt->bindParam(':property_nature', $_POST[...]);
$stmt->bindParam(':city',            $_POST[...]);

$stmt->execute();

$data = $stmt->fetch(PDO::FETCH_ASSOC);

于 2013-09-24T09:11:11.167 回答
0

不知道为什么要这样做,而不仅仅是在创建字符串时修复它,您可能正在寻找一个正则表达式,例如/(?<!") and/使用否定的lookbehind

$string = 'and purpose="Buy and property_type="Home" and property_nature="Residential and city =" Lahore"';
$string = preg_replace('/(?<!") and/', $string);
var_dump($string);

这使

和 purpose="Buy" 和 property_type="Home" 和 property_nature="Residential" 和 city ="Lahore"

键盘演示

正则表达式 101 演示

这也不会自动更改"Home" and为,"Home"" and因为它确保没有报价。

于 2013-09-24T11:23:04.433 回答