0

当我有这样的查询时:

SELECT *
FROM aii_images
WHERE id=34

并在其上执行 mysql_real_escape_string 我得到了:

Something is wrong in your syntax near '\n                FROM aii_images

不使用 mysql_real_escape_string 时不存在这样的问题。

有什么好的方法可以解决吗?Str_replace 或类似功能不是一个选项 - 我的查询有时包含“\n”以及大量文本。Str_replace 会杀死我的服务器。

4

2 回答 2

2

仅与值一起使用mysql_real_escape_string(),而不与整个语句一起使用。

$strStatement = "
    SELECT
        *
    FROM
        aii_images
    WHERE
        id = '" . mysql_real_escape_string( $strId ) . "';";
于 2012-07-27T12:00:50.383 回答
1

首先,您不应该逃避整个查询;只是您要插入的字段。(请参阅@Raisch 对此的回答)

其次,建议不要再使用这些mysql_xxx函数——PHP手册非常清楚地说明了这一点:http: //php.net/manual/en/function.mysql-query.php

相反,您应该使用mysqli_xxx函数或 PDO 库。有关更多信息和这两个库的手册页的更多链接,请参见上面的链接。

如果您使用这些库中的任何一个,您可以使用“Prepared Statements”技术,这使您不必再次手动转义字符串。这是更好的技术,并且会使整个问题变得多余。

于 2012-07-27T12:13:21.253 回答