当POST设置成功时,UPDATE查询不工作


UPDATE query isn't working when POST isset

我有这个代码,允许用户从url链接重置他们的帐户

<?php
$servername = "localhost";
$username = "  ";
$password = " ";
$dbname = "   ";
$code = $_GET['code'];
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
$sql = "SELECT com_code FROM user WHERE com_code = ".$_GET['code'];
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "<form action='reset.php?code=" . $row["com_code"]. "' method='post'>Enter New Password: <input type='text' name='new_password' placeholder='New Password'><br><input type='submit' value='Submit'></form>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>
<?php
$servername = "localhost";
$username = "  ";
$password = "  ";
$dbname = "    ";
  $pword = $_POST['new_password'];
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
if (isset($_POST['Submit'])) {
$sql1 = "UPDATE user SET password='$pword', com_code=NULL WHERE com_code = '$code'";
}
if ($conn->query($sql1) === TRUE) {
    echo "Password has been change successfully!";
} else {
    echo "Error updating record: " . $conn->error;
}
?>

我一直得到错误:

警告:mysqli::query():空查询/home/u590953899/public_html/notify/reset.php第47行错误更新记录:

当您按下提交按钮时,它应该更新数据库,其中com_code = $GET url
,
发生的情况是,它只重新加载页面,我如何解决这个问题?

链接为:http://notify.bithumor.co/reset.php?code=123456789

你应该像这样改变你的代码在isset内:

if (isset($_POST['Submit'])) {
    $sql1 = "UPDATE user SET password='$pword', com_code=NULL WHERE com_code = '$code'";
    if ($conn->query($sql1) === TRUE) {
        echo "Password has been change successfully!";
    } else {
        echo "Error updating record: " . $conn->error;
    }
  }

在代码中做以下修改:

if (isset($_POST['Submit'])) {
    $sql1 = "UPDATE user SET password='$pword', com_code IS NULL WHERE com_code = '$code'";
    if ($conn->query($sql1) === TRUE) {
        echo "Password has been change successfully!";
    } else {
        echo "Error updating record: " . $conn->error;
    }
}

我们使用IS NULL检查NULL

if (isset($_POST['Submit'])) {
     $sql1 = "UPDATE user SET password='$pword', com_code IS NULL WHERE com_code = $code";
}

$_POST['Submit']将永远不会设置,当你的提交按钮没有name="submit"。仅仅有type="submit"value="submit"id="submit"是不行的。你需要name属性

首先检查您的输入类型是否有name="Submit",如果没有添加它。之后,首先返回您的查询,

if (isset($_POST['Submit'])) {
  echo "UPDATE user SET password='$pword', com_code=NULL WHERE com_code = '$code'";
   $sql1 = "UPDATE user SET password='$pword', com_code=NULL WHERE com_code = '$code'";
  if ($conn->query($sql1) === TRUE) {
            echo "Password has been change successfully!";
   } else {
            echo "Error updating record: " . $conn->error;
        }
  }

和所有的代码,即查询执行和消息应该在同一个if语句(if(isset($_POST['Submit']))))