1

解決方法がわからない問題に遭遇しました。

私はこの行を持っています:

parse = cur.execute("SELECT * FROM testdb WHERE Match(name) AGAINST         ('"The.New.York.Times"' IN BOOLEAN MODE);")

私が実行した場合:

parse = cur.execute("SELECT * FROM testdb WHERE Match(name) AGAINST ('"The.New.York.Times"'     IN BOOLEAN MODE);")

mysql コンソールでは動作します。しかし、Pythonは引用符が好きではないと思い'"The.New.York.Times"'ます。どうすれば解決できますか?

また、Pythonでその検索文字列を変数にするにはどうすればよいですか? の線に沿った何か

parse = cur.execute("SELECT * FROM testdb WHERE Match(name) AGAINST ('"%s"' IN BOOLEAN MODE);, var1")

?

4

1 に答える 1

1

SQL インジェクションを回避し、適切なエスケープを取得するには、クエリ変数を 2 番目のパラメータとして に渡す必要がありますexecute

param = '"The.New.York.Times"'
cur.execute("SELECT * FROM predb WHERE Match(name) AGAINST (%s IN BOOLEAN MODE)", (param, ))
于 2013-08-05T12:29:44.177 に答える