繁体   English   中英

在MySQL PDO中使用PHP函数

[英]Using PHP functions in MySQL PDO

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

$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行。

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

感谢您的帮助,Bartek。

我可以直接在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'))
{

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM