Şu sorgu için MySQL Query Yardım

2 Cevap php

Ben iş için bu sorguyu almak biraz sorun yaşıyorum:

$userId = mysql_real_escape_string( $_SESSION['user_id'] );
$userPassProvided = mysql_real_escape_string( $_POST['oldPassword'] );
$query  = "SELECT user_id, AES_DECRYPT( user_pass, '".$db_aes_key."' ) AS user_pass ";
$query .= "FROM users_tbl WHERE MATCH( user_id, user_pass ) ";
$query .= "AGAINST( '".$userId."', '".$userPassProvided."' IN BOOLEAN MODE ) LIMIT 1";
$result = mysql_query( $query, $mysql_db );

User_id ve user_pass sırasıyla $ kullanıcı adınız ve $ userPassProvided gibi aynı neyin ne yapmak istiyorum kayıt için sorgu users_tbl olduğunu. Birisi benim sorgu ile neyin yanlış olduğunu bana söyleyebilir misiniz?

Teşekkürler. :)

2 Cevap

Aşağıdaki yapmak istediğiniz görünüyor ne işlevsel eşdeğerdir. (Aşağıda "... Ancak" okur musun)

$query  = "SELECT user_id, AES_DECRYPT( user_pass, '".$db_aes_key."' ) AS user_pass ";
$query .= "FROM users_tbl ";
$query .= "WHERE user_id = '".$userId."' ";
$query .= "  AND AES_DECRYPT(user_pass, '".$db_aes_key."' ) = '".$userPassProvided."' ";
$query .= "LIMIT 1";

Ancak ... MySQL AES-decript için veritabanındaki her kodlanmış şifreyi olurdu. Bu, her iki hesaplama pahalı olması ve herhangi bir SQL indeksi kullanılarak önleyecektir.

Alternatif olarak, size verilen şifreyi şifreleyerek düşünün, ve veritabanında saklanan olanlar için maç olabilir. Belki böyle bir şey (not: denenmemiş):

$query  = "SELECT user_id, AES_DECRYPT( user_pass, '".$db_aes_key."' ) AS user_pass ";
$query .= "FROM users_tbl ";
$query .= "WHERE user_id = '".$userId."' ";
$query .= "  AND user_pass = AES_ENCRYPT('".$userPassProvided."', '".$db_aes_key."' ) ";
$query .= "LIMIT 1";

Eğer bekliyorlar gibi KARŞI KAÇINCI () () çalışmıyor. Ne yapar oldukça column2 karşı column1 ve değer2'ye karşı değer1'i karşılaştırarak daha, MAÇ sağlanan her sütun karşı KARŞI tek bir dize () () maç girişimleridir.

Eğer çalıştı ...WHERE user_id = '".$userId."' AND user_pass = '"$userPassProvided"' LIMIT 1? Var