2017-12-29 34 views
-1

を削除します。 tablenameをハードコードすると完全に動作しますが、代わりに変数を使用できるようにするには何が必要ですか?flask_mysqldbは、だから私は、私は任意のテーブルの行を削除する関数を記述しようとしているフラスコ中flask_mysqldb(PythonのWebサイト)</p> <p>を使用する変数テーブルFROM

@app.route('/delete/<string:table>/<string:id>', methods=['POST']) 
@is_logged_in 
def delete(table, id): 
    # Create Cursor 
    cur = mysql.connection.cursor() 

    # Execute 
    cur.execute("DELETE FROM %s WHERE id = %s", (table, id)) 

    mysql.connection.commit() 

    cur.close() 

    flash('%s deleted'(table), 'success') 

    return redirect(url_for('dashboard')) 
+0

する必要がありますあなたのコードスニペットは、テーブル名に変数を使用しているようです。削除機能を実行しているときにエラーが発生していますか? –

答えて

0
cur.execute("DELETE FROM %s WHERE id = %s", (table, id)) 

cur.execute("DELETE FROM %s WHERE id = %s" % (table, id)) 
+0

**これはSQLインジェクションです。**文字列フォーマットを使用せず、パラメータ化されたクエリを使用します。テーブル名ではできないので、最初に有効な値のリストに対して名前を検証します。重複を参照してください。 – davidism

関連する問題