如何在PHP的查询中添加函数

如何在PHP的查询中添加函数,php,function,encryption,fetch,Php,Function,Encryption,Fetch,我用PHP创建了一个加密和解密函数,在数据库中插入加密数据。但是当我想用这是函数decrypt_data() 真实查询 $sql = $con->query("SELECT `useranme` FROM `logindb` WHERE username = '$username'"); 我做了 $sql = $con->query("SELECT `useranme` FROM `logindb` WHERE username= decrypt_data('$username')

我用PHP创建了一个加密和解密函数,在数据库中插入加密数据。但是当我想用这是函数
decrypt_data()

真实查询

$sql = $con->query("SELECT `useranme` FROM `logindb` WHERE username = '$username'");
我做了

$sql = $con->query("SELECT `useranme` FROM `logindb` WHERE username= decrypt_data('$username')");
if ($sql->num_rows > 0) { ... }
//--But it is not works--//
// -- LocalHost error : Notice: Trying to get property 'num_rows' of non-object -- //

我是如何使其正确的请帮助我创建一个我想要的正确代码

虽然可以在双引号字符串中放入变量名,但不能在字符串中放入函数并期望它执行

相反,你要做的是

$encrypted_username = encrypt_data($username);
$sql = $con->query("SELECT `username` FROM `logindb` WHERE username='$encrypted_username'");

由于您将加密的用户名存储在数据库中,因此您需要在运行查询之前加密$username,而不是解密它,以便它与数据库中的内容匹配。事实上,您可能根本不需要运行decrypt_data函数


注意:任何访问您的服务器的黑客也可以访问您的加密算法的所有细节,因此这对黑客来说可能是一种花招,但在安全方面并没有提供太多好处。另外,我希望对于密码字段,您正在对密码进行哈希处理,而不是使用此加密函数。

不要忘记也包括您的函数。那么,我们可以采用什么方法来端到端地保护数据呢?本文似乎很好地解释了哈希和加密之间的区别。基本上,哈希是一种单向加密函数,可以加密数据,但不能解密数据。它可以是单向的,因为您可以获取密码,对其进行散列,并检查散列是否与数据库中的内容匹配。没有必要解密任何东西。我已经更新了第二个,将用户名用引号括起来,如果加密的用户名中有空格,就需要引号。现在能用了吗?我刚刚意识到你的问题中用户名拼写错误。我已经更新了这两个示例以使用正确的拼写。确保你的代码中也固定了这一点。
$sql = $con->query("SELECT `username` FROM `logindb` WHERE username='" . encrypt_data($username) . "'");