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 に答える