2

私の目標は、電子メールが mysql データベースに既に存在するかどうかを確認することです。Web フォーム (文字列) から変数に情報を取得しています。現在、次のコードがあります。

import MySQLdb

db = MySQLdb.connect("localhost","username","password","databasename")
cursor = db.cursor()
if cursor.execute("select count(*) from registrants where email = " + "'"emailvar"'") == 0:
    print "it doesn't exist"

ページにアクセスしようとすると、内部サーバー エラーが発生します。エラーを "'"emailvar"'" に絞り込み、コードは正常に動作しますが、電子メールには "@" と "." が含まれています。これにより、SQL 構文エラーが発生します。「'」「'」の開き括弧と閉じ括弧を使用してそれらをエスケープしようとしましたが、機能せず、Web ページがクラッシュします。

4

1 に答える 1

2

あなたがしたい:

query = 'select count(*) from registrants where email=%s'
cursor.execute(query, emailvar)
if next(cursor, None) is None:
    # whatever

しかし、.fetchone()どれが機能するかを調べEXISTS、SQLでも(一意の制約があり、DBがそれを処理できるようにする必要があります)、ブール風の空の結果を返します。

于 2012-12-03T16:42:12.503 に答える