1

我正在尝试执行 mysql 查询,但出现以下错误:

(1064, '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 \'C:/wamp/www/dle/uploads/posts/2013-08/1376251255-IMG11111674.jpg" >\n            \' at line 3')

这是我要执行的python代码:

image_p_add = """
                <div>
                <!--TBegin:%s|-->
                <a href=\"%s\" onclick=\"return hs.expand(this)\" >
                <img src=\"%s\" alt=\"%s\" title=\"%s\"  />
                </a>
                <!--TEnd-->
                </div><br /><br />
                """ % (img_fulladd.replace("_", "\_"), img_fulladd.replace("_", "\_"), thumb_fulladd.replace("_", "\_"), post_header[1:-1], post_header[1:-1])
post_shrt_text = "some text" + image_p_add
qu0 = """INSERT INTO dle_post (category, short_story)
                VALUES
                    ('1', %s)""" % (post_shrt_text)
cur.execute(qu0)

我检查了很多代码,几乎可以肯定没有遗漏引号。

img_fulladd并且thumb_fulladd是一些图像地址,例如:

C:/wamp/www/dle/uploads/posts/2013-08/1376251255-IMG11111674.jpg

post_header是双引号内的一些标题文本

有什么想法我可能做错了吗?

4

1 回答 1

0

让 MySQLdb 驱动程序为您执行参数插入应该会产生更好的结果。

cur.execute(
    "INSERT INTO dle_post (category, short_story) VALUES ('1', %s)", (
        post_shrt_text,
    )
)

最好让驱动程序处理这个问题,因为它知道如何在不允许 SQL 注入的情况下安全地将字符串插入到查询中。

于 2013-08-11T20:39:26.503 回答