我只是SQL的新手,所以请帮助我。
我有一个简单的网站,每个用户都有一个用户名和密码。如果密码是“Jonathan”,我想在帐户页面上打印出密码,如j******n
。
问题是,我使用SQL函数ENCODE()
我可以使用DECODE()
来获取SQL中的值,但接着是什么?如何在网页上 打印 (然后我会对其进行格式化)?我只知道如何使用mysqli_query()
和通过查询的while
循环来运行查询。
SQL中的函数是否等同于PHP的echo
,可以在网页上打印出一个值?或者PHP有一个可以从SQL打印出函数的函数吗?
告诉我,如果我不清楚。
感谢您的回答。
答案 0 :(得分:1)
解决方案是使用别名。
> $query = "SELECT DECODE(foo,'key') AS somename FROM bar";
> $result =mysql_query($query);
> echo mysql_result($result,'somename');
或
> $row = mysql_fetch_assoc($result); echo $row['somename'];
来自:http://forums.devshed.com/mysql-help-4/php-mysql-encode-decode-57952.html
答案 1 :(得分:0)
不要将MySQL的ENCODE()
和DECODE()
用于密码。相反,使用PHP的password_hash()
来哈希密码。你永远不想把它存储在纯文本中(甚至加密),总是哈希。
虽然您仍然使用纯文本(例如您password_hash()
的位置),但请将其提示版本存储在数据库的新颜色中。
$password = $_POST['password'];
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
$hint_password = substr($password, 0, 1) . str_repeat('*', strlen($password) -2) . substr($password, -1);
现在将$hint_password
与$hashed_password
分开存储在数据库中。这可以确保: