[英]Using PHP functions in MySQL PDO
我可以直接在SQL查询(使用mySQL和PDO )中使用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.