prepared statementがうまくいかない。
Flaskを使用している、簡易的なDB操作の勉強をしています。
SQLを実行する際に、SQLインジェクション対策でprepared statementを実装しようとしましたが、
うまくいきません。
ネットで調べても、原因がわかりませんでした。
発生している問題・エラーメッセージ
stackTraceで出力しています。
内容的には、?が問題かと思いましたが、%Sなどに変えても、駄目でした。
c.execute(sql,(para1, para2, para3)) sqlite3.OperationalError: near "?": syntax error
該当のソースコード
以下、抜粋です。
コメントアウトしている箇所は、prepared statementを使わずに、実行した場合です。
こちらは、うまく処理されました。
PYTHON
1def delete_db(para1, para2, para3): 2 try: 3 conn = get_db() 4 #sql = "delete from " + para1 + " where " + para2 + " = " + para3 5 sql = "delete from ? where ? = ?" 6 c = conn.cursor() 7 #c.execute(sql) 8 c.execute(sql,(para1, para2, para3)) 9 conn.commit()
どこが原因か分かる方がいましたら、教えていただきたいです。
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。