0

現在、次のコードを使用しています。

$sql = sprintf("SELECT * FROM users WHERE email = '%s' and password = '%s'", $email, $password);

私は次のことを達成したい:

$sql = sprintf("SELECT * FROM database1.users AND database2.users WHERE email = '%s' and password = '%s'", $email, $password);

ユーザーがいずれかのテーブルに存在する可能性を確認する必要があります。

これを処理する方法について何か提案はありますか?

4

3 に答える 3

2

a を使用しUNIONて両方のクエリを組み合わせることができます。

SELECT * FROM database1.users WHERE email = '%s' and password = '%s'
UNION
SELECT * FROM database2.users WHERE email = '%s' and password = '%s'
于 2012-08-15T20:31:36.760 に答える
0

クエリは次のようになります。

SELECT table1.*, table2.* FROM table1 JOIN table2
ON table1.userID=table2.userID WHERE email=? AND password=? LIMIT 1

変数を SQL クエリに追加することは非常に危険です。sprintf を使用することには意味がありますが、意図したことは達成されません。準備済みステートメントを使用して、SQL インジェクションから適切に保護します。

于 2012-08-15T20:47:46.440 に答える
0
SELECT IF(A.UserFound*B.UserFound=0,'No','Yes') Authenticated
FROM
(
    SELECT COUNT(1) UserFound FROM database1.users
    WHERE email = '%s' and password = '%s'
) A,
(
    SELECT COUNT(1) UserFound FROM database2.users
    WHERE email = '%s' and password = '%s'
) B;
于 2012-08-15T21:01:29.710 に答える