我目前正在从事一个项目,需要让用户注册,然后将电子邮件发送到带有批准链接的网站管理员电子邮件(包含下面的php页面,用户电子邮件和sha512)。单击批准链接时,它的意思是用相应的电子邮件更新表,并将isApproved更改为1,但除了打印回显外,它什么也没做。
我尝试更改SQL命令,在名称周围添加`,在w3schools,stackoverflow和其他论坛上查找它,但一无所获。
<?php
$hash = $_GET['h'];
$email = $_GET['e'];
if($hash == hash('sha512', 'ACCEPT')){
$host = "redacted";
$dbUsername = "redacted";
$dbPassword = "redacted";
$dbname = "redacted";
//create connection
$conn = mysqli_connect($host, $dbUsername, $dbPassword, $dbname);
if (mysqli_connect_error())
{
die('Connect Error('. mysqli_connect_errno().')'.mysqli_connect_error());
}
else
{
$sql = "UPDATE `User` SET `isApproved`='1' WHERE `User`.`email`=$email";
echo("approved");
}
?>
我打开网站时看到的所有内容都是“已批准”,这是我的预期,但数据库中的记录保持不变。
答案 0 :(得分:0)
我认为您没有运行execute命令。
$conn = mysqli_connect($host, $dbUsername, $dbPassword, $dbname);
....
$sql = "UPDATE `User` SET `isApproved`='1' WHERE `User`.`email`=$email";
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_execute($stmt);
答案 1 :(得分:0)
那是因为您没有运行查询语句。
$sql = "UPDATE `User` SET `isApproved`='1' WHERE `User`.`email`=$email";
是您编写但未执行的查询。您需要使用mysqli_query()方法执行该操作,该方法传入连接并在参数mysqli_query($conn, $sql);
中进行查询。您可以了解有关此here的更多信息。
<?php
$hash = $_GET['h'];
$email = $_GET['e'];
if($hash == hash('sha512', 'ACCEPT')){
$host = "redacted";
$dbUsername = "redacted";
$dbPassword = "redacted";
$dbname = "redacted";
//create connection
$conn = mysqli_connect($host, $dbUsername, $dbPassword, $dbname);
if (mysqli_connect_error())
{
die('Connect Error('. mysqli_connect_errno().')'.mysqli_connect_error());
}
else
{
$sql = "UPDATE `User` SET `isApproved`='1' WHERE `User`.`email`=$email";
mysqli_query($conn, $sql); // <------- Run SQL Query
echo("approved");
}
?>