2013-11-03 116 views
0

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

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

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

感谢您的帮助,鲍尔泰克。

回答

0

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

号 mysql的什么都不知道PHP及其功能。您必须在PHP中使用mysql和PHP函数中的mysql函数。很容易记住。

所以,在这里你去,用一个单一的查询

$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')) 
{ 
+0

谢谢,这正是我需要的! – guest459473

0

你不能在一个MySQL查询中使用PHP函数。

你仍然可以做到这一点有一个查询。只需比较其username即可检索用户信息(包括密码)。然后,在PHP中,将存储的密码与刚刚计算的密码进行比较。这甚至会允许你区分两种情况:“用户的存在,但密码错误”“用户不存在”。

+0

Merci Guillaume。 (JE低喃法语) ,我需要它来选择用户密码和他的“盐”,之后,用“generatePassword”功能我产生了良好的密码,[它使用了一些新的PHP 5(添加所选盐> = 5.1.2 ) 功能]。 所以我需要两个查询: - 一个用于选择的盐,然后我用我的功能直接在PHP代码; - 第二个用于检查具有此密码的用户是否存在; – guest459473