1

入力するとき

SELECT word from xyz WHERE number = '+12340008933';

phpmyadmin に入れて実行すると、有効なクエリ出力が得られます。

ただし、ファイルから番号を読み取っている場合、何も返されません。例えば

base_dir = "/home/jayjay/Desktop/scripts/"

filehandle = open(base_dir+"inputFile.txt",'r')
for number in filehandle.readlines():
    sql = "SELECT word from xyz WHERE number = '%s';"%number
    cursor.execute(sql)
    rows = cursor.fetchall()
    for row in rows:
        print row[0]

これは何も返しません。まったく。入力ファイルに問題がある可能性があると仮定して、入力ファイルをUnix2dosから変換し、その逆も行いました

4

1 に答える 1

2

SQL インジェクションが発生しやすい文字列置換ではなく、パラメータ化された SQL ステートメントを使用する必要があります。また、おそらく、ファイルから読み取った値の周囲の空白を取り除く必要があります。次のことを試してください。

base_dir = "/home/jayjay/Desktop/scripts/"

filehandle = open(base_dir+"inputFile.txt",'r')
for number in filehandle.readlines():
    sql = "SELECT word from xyz WHERE number = %s"
    cursor.execute(sql, (number.strip(),))
    rows = cursor.fetchall()
    for row in rows:
        print row[0]
于 2012-10-07T17:30:53.953 に答える