gpt4 book ai didi

php - MySQL 查询匹配项帮助

转载 作者:行者123 更新时间:2023-11-29 15:07:20 24 4
gpt4 key购买 nike

我在执行此查询时遇到了一些问题:

$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 );

我想做的是查询 users_tbl 中的记录,其中 user_id 和 user_pass 分别与 $userId 和 $userPassProvided 相同。有人可以告诉我我的查询有什么问题吗?

谢谢。 :)

最佳答案

以下内容在功能上等同于您似乎想要做的事情。 (请阅读下面的“但是...”)

$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";

...但是 MySQL 必须对数据库中的每个编码密码进行 AES 解密。这不仅会增加计算成本,而且会妨碍使用任何 SQL 索引。

或者,您可以考虑对提供的密码进行加密,并将其与数据库中存储的密码进行匹配。也许是这样的(注意:未经测试):

$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";

关于php - MySQL 查询匹配项帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1725694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com