0

我可以直接在 SQL 查询中使用我自己的 PHP 函数(使用mySQLPDO)吗?例如:

$query  = null;
$result = null;
$query  = $this->database_0->prepare("SELECT `id`, `salt` FROM `general_users` WHERE `username` = :username AND `password` = CONCAT(generatePassword(:password, `salt`)) LIMIT 1");
$query->bindValue(':username', $this->input->getValue('username'), PDO::PARAM_STR);
$query->bindValue(':password', $this->input->getValue('password'), PDO::PARAM_STR);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
$query->closeCursor();

查看“WHERE”案例中的第 3 行。

如果不可能,我必须使用两个查询来检查用户是否存在,它看起来不是很理想。

谢谢你的帮助,巴特克。

4

2 回答 2

0

我可以直接在 SQL 查询中使用我自己的 PHP 函数吗

不,Mysql 对 PHP 及其功能一无所知。你一定会在 mysql 中使用 mysql 函数,在 PHP 中使用 PHP 函数。很容易记住。

所以,给你一个查询

$sql  = "SELECT id, salt, password FROM general_users WHERE username = ?";
$stmt = $this->db->prepare($sql);
$query->execute([$this->input->getValue('username')]);
$row = $query->fetch();

if (generatePassword($row['password'], $row['salt']) == $this->input->getValue('password'))
{
于 2013-11-03T16:13:53.667 回答
0

您不能在 MySQL 查询中使用 PHP 函数。

您仍然可以使用单个查询来执行此操作。只需比较其 . 即可检索用户信息(包括密码)username。然后,在 PHP 中,将存储的密码与您刚刚计算的密码进行比较。这甚至可以让您区分两种情况:“用户存在,但密码错误”“用户不存在”。

于 2013-11-03T16:15:27.643 回答