我在这里做错了什么?在我添加代码的最后一部分IF(){}语句之前,所有数据都是子语句。如果信息提交正确,我想把它放在哪里,因为它说谢谢!,否则,显示我设置的错误。
<form method="POST">
<input type="text" name="username" placeholder="username"><br />
<input type="password" name="password" placeholder="password"><br />
<input type="submit">
</form>
<?php
if(isset($_POST['username'], $_POST['password'])){
require 'core/db.php';
$conn = dbConnect()->prepare("INSERT INTO users (username, password) VALUES (?,?)");
$conn->bindParam(1, $_POST['username']);
$conn->bindParam(2, $_POST['password']);
$conn->execute();
if($conn === true){
echo 'Thanks!';
header('Location: index.php');
exit;
} else{
echo 'something went wrong';
}
}
?>
答案 0 :(得分:2)
$conn
不应该检查true
。 $conn
是PDOStatement
的实例。您应该检查$conn->execute()
的返回值。
if($conn->execute() === true){
header('Location: index.php');
exit;
} else{
echo 'something went wrong';
}
正如@mjayt所指出的,你不应该在header
调用之前输出内容。你绝对可以使用输出缓冲ob_start()...ob_end_flush()
输出,但我不认为这里真的需要echo
。
答案 1 :(得分:2)
if($conn->execute()){
header('Location: index.php?success=true');
exit;
} else{
echo 'something went wrong';
}
我会这样做,echo不起作用,它会破坏header()重定向,因为你正在向浏览器发送内容。即使它确实如此,你也不会看到它,因为它会将你重定向到另一页。我通常会在重定向中添加一个标志,这样我就可以在那里显示成功消息。