2016-10-13 8 views
0

プログラムを作成したのは、mysqlの入力番号とデータを削除することです。しかし、実行プログラムのエラーは、私は真の値がtrueでもnullが機能しない場合

#!/usr/bin/python 

import mysql.connector 

conn = mysql.connector.connect(host="",user="",passwd="",db="") 
cursor = conn.cursor() 

try: 
     num = int(input("InputNumber 1-10 : ")) 
     if num <= 10: 
       if num == null: //if null print false 
         sql1 = "SELECT user1 FROM dt WHERE user1 = '%d' " %(num) 
         cursor.execute(sql1) 
         data = cursor.fetchall() 
       print(data[0]) 
       sqlde = "DELETE FROM dt WHERE user1 = '%d' " %(num) 
       cursor.execute(sqlde, (num)) 
       print "DELETE SUCESS" 
       conn.commit() 
     else: 
       print "Data Empty" 
except: 
     conn.rollback() 

conn.close() 
+1

は常に完全なエラーメッセージが表示さバインドする必要がある理由を理解することができます。あなたは間違っています。 '%'を使用してクエリを作成しないでください - それは安全ではありません - 'execute(...、arguments)'を使用してください。 – furas

+0

あなたは最後の ')' int(入力(...)) ' – furas

+0

OHHHHHHHH!ありがとうございました:D bad forgot –

答えて

2

NUM = INT(入力( "InputNumberを:" に変更\ sql1構文エラーをレポート)) < - それを

を閉じることforguetていない私はわかりません%iについては、私はいつも、あなたもあなたのクエリに一つの問題があり、

を文字列に整数のため%d%sを使用してご覧ください。しかしSQL Injection

ので、これを回避するには、この

sql1 = "DELETE FROM dt WHERE user1 = ?" 
       try: 
         cursor.execute(sql1, (num)) 
         print "DELETE SUCECC" 
         conn.commit() 
       except: 
         conn.rollback() 
         print "ERROR DELETE" 

のようなものを試してみてください、あなたはおよそquestion mark herehereをチェックして、あなたは自分の価値観

+0

what a 'IndentationError:インデントされたブロックが予想されました。 ' –

+0

これは、スペースとタブを混ぜているためです。一種のアイデアを決めて、それを使うか、スペースだけを使うか、タブだけを使うか、私の推薦ではスペースだけを使う。ほとんどのエディタには、自動的にタブをスペースに変換するオプションがあります。あなたのエディタにこのオプションがある場合は、 –

+0

をオンにしてください。質問とコードを変更することができます。^^ –

関連する問題