我正在运行这段代码,它按预期工作但发出通知: -
<!DOCTYPE>
<?php
$db= mysqli_connect("localhost","root","","php") or die ("Connection wrong!");
?>
<html>
<body>
<form method="POST" action="db.php">
<input type="text" name="name" placeholder="Enter name here"></br>
<input type="password" name="pass" placeholder="Enter pass here"></br>
<input type="text" name="email" placeholder="Enter email here"></br>
<input type="submit" name="sub" value="Insert">
</form>
<?php
if(isset($_POST['sub'])){
$name = $_POST['name'];
$pass = $_POST['pass'];
$email = $_POST['email'];
}
$insert = "insert into users (name,pass,email) values ('$name','$pass','$email')";
$run = mysqli_query($db,$insert);
if($run){
echo "<h3> Reg Success!!<h3>";
}
?>
<br/>
<table width="500" bgcolor="orange" border="2">
<tr>
<th>S.N</th>
<th>Name</th>
<th>Password</th>
<th>Email</th>
<th>Edit</th>
<th>Delete</th>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>
它工作但是通过这些通知,行没有指示 $ insert 的行被声明。什么可能导致这个? : -
答案 0 :(得分:2)
我认为这是因为您在插入之前放置了}
if(isset($_POST['sub'])){
$name = $_POST['name'];
$pass = $_POST['pass'];
$email = $_POST['email'];
到此
if(isset($_POST['sub'])){
$name = $_POST['name'];
$pass = $_POST['pass'];
$email = $_POST['email'];
$insert = "insert into users (name,pass,email) values ('$name','$pass','$email')";
}
答案 1 :(得分:1)
<?php
if (isset($_POST['sub'])) {
// Isset to check if post variable exists
$name = isset($_POST['name'])?$_POST['name']:'';
$pass =isset( $_POST['pass'])? $_POST['pass']:'';
$email = isset( $_POST['email'])? $_POST['email']:'';
$insert = "insert into users (name,pass,email) values ('$name','$pass','$email')";
$run = mysqli_query($db, $insert);
// Insert into database should be inside Conditional statement
}
if ($run) {
echo "<h3> Reg Success!!<h3>";
}
?>
答案 2 :(得分:1)
通知表示您尝试访问的不是现有变量。为避免通知,您可以使用与使用isset()检查$ _POST [&#39; sub&#39;]相同的方式;
希望这对你有所帮助你也不会错过关于php通知,警告,致命错误的错误:)
编辑:同样是检查POST请求的好习惯
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// and here you can do your validations and save you data
// or whatever you want to do
}
这意味着您的表单已提交,因为我们可以在您的代码中看到您的html表单方法是&#34; POST&#34;
我已经编辑了您的代码,因为几个原因请查看:
<!DOCTYPE>
<html>
<body>
<form method="POST" action="db.php">
<input type="text" name="name" placeholder="Enter name here"></br>
<input type="password" name="pass" placeholder="Enter pass here"></br>
<input type="text" name="email" placeholder="Enter email here"></br>
<input type="submit" name="sub" value="Insert">
</form>
<br/>
<table width="500" bgcolor="orange" border="2">
<tr>
<th>S.N</th>
<th>Name</th>
<th>Password</th>
<th>Email</th>
<th>Edit</th>
<th>Delete</th>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Here we have post request
// open connection
$db = mysqli_connect("localhost","root","","php") or die ("Connection wrong!");
// here you must validate user input
$name = $_POST['name'];
$pass = $_POST['pass'];
$email = $_POST['email'];
// and then make insert
$insert = "insert into users (name,pass,email) values ('$name','$pass','$email')";
if(mysqli_query($db,$insert)) {
echo "<h3> Reg Success!!<h3>";
}
}
?>
答案 3 :(得分:0)
在“正确”编程中,在为变量赋值之前,你应该“声明”它们。
尝试将其置于if语句之上,以确定是否存在帖子值。
var $name;
var $pass;
var $email;