Php 为什么不是';我的Insert语句不起作用吗?

Php 为什么不是';我的Insert语句不起作用吗?,php,database,mysqli,Php,Database,Mysqli,我在HTML文档中有一个简单的PHP脚本。扩展名是.php,但我不明白它为什么不从表单输入向表中插入数据,我的表结构如下: UserID : int, primary key, auto increment Firstname : varchar Lastname : varchar Username : varchar Password : varchar DateRegistered : timestamp default - current_timestamp DateUpdated :

我在HTML文档中有一个简单的PHP脚本。扩展名是
.php
,但我不明白它为什么不从表单输入向表中插入数据,我的表结构如下:

UserID : int, primary key, auto increment
Firstname : varchar 
Lastname : varchar
Username : varchar
Password : varchar
DateRegistered : timestamp default - current_timestamp
DateUpdated : timestamp, attributes - on update current_timestamp default 0000-00-00 00:00:00
我的数据库连接凭据正确。请帮忙

<!Doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Registration Page</title>
</head>
<body>
    <form id="register_form" method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>">
    <p>
        <label for="first_name">First Name</label>
        <input type="text" name="first_name">
    </p>
    <p>
        <label for="last_name">Surname</label>
        <input type="text" name="last_name">
    </p>
    <p>
        <label for="username">Username</label>
        <input type="text" name="username">
    </p>
    <p>
        <label for="password">Password</label>
        <input type="text" name="password">
    </p>
    <p>
        <input type="submit" name="registration_submit" value="Register">
    </p>
    </form>

</body>
</html>

<?php 

if (isset($_POST['registration_submit']))
{

    $fname = $_POST['first_name'];
    $lname = $_POST['last_name'];
    $uname = $_POST['username'];
    $pword = $_POST['password'];

    if (empty($fname) || empty($lname) || empty($uname) || empty($pword))
    {
        echo "Required fields missing";
    }
}
else if (!empty($_POST['first_name']) && !empty($_POST['last_name']) && !empty($_POST['username']) 
    && !empty($_POST['password']) ) 
    {
        $fname = $_POST['first_name'];
        $lname = $_POST['last_name'];
        $uname = $_POST['username'];
        $pword = $_POST['password'];
        echo "ElseIF portion reached";

        $con = new mysqli_connect("localhost", "root", "", "website2");
        $query = "insert into users values(NULL,'$fname','$lname','$uname','$pword',NULL, NULL)";
        $result = $con->query($query);
        if (!$result) die("something went wrong ". $con->error);
        $result->close();
        $con->close();
        echo "<br /> User Registered";
    }
?>

注册页

由于您的
isset($\u POST['registration\u submit'])
的条件不合适,因此每当您提交表单时,它都符合
if
语句,因此您无法执行
else if
语句。

请尝试

if (isset($_POST['registration_submit']))
{

$fname = $_POST['first_name'];
$lname = $_POST['last_name'];
$uname = $_POST['username'];
$pword = $_POST['password'];

if (empty($fname) || empty($lname) || empty($uname) || empty($pword)) {
    echo "Required fields missing";
    exit(); //just to be safe that below else statement does not gets executed if variable is empty.
}else{
    //you have already did your argument above if data exists, so we don't need to do this argument again (!empty($_POST['data');
    $con = new mysqli_connect("localhost", "root", "", "website2");
    $query = "insert into users values(NULL,'$fname','$lname','$uname','$pword',NULL, NULL)";
    $result = $con->query($query);
    if (!$result) die("something went wrong ". $con->error);
    $result->close();
    $con->close();
    echo "<br /> User Registered";
}
?>
if(isset($\u POST['registration\u submit']))
{
$fname=$\u POST['first\u name'];
$lname=$\u POST['last\u name'];
$uname=$_POST['username'];
$pword=$_POST['password'];
if(empty($fname)| | | | | | empty($uname)| | empty($pword)){
回显“缺少必填字段”;
exit();//为了安全起见,如果变量为空,则不会执行下面的else语句。
}否则{
//如果数据存在,您已经执行了上面的参数,因此我们不需要再次执行此参数(!empty($_POST['data');
$con=newmysqli_connect(“localhost”、“root”、“website2”);
$query=“插入到用户值中(NULL,$fname','$lname','$uname','$pword',NULL,NULL)”;
$result=$con->query($query);
如果(!$result)死亡(“出现了问题”。$con->error);
$result->close();
$con->close();
echo“
用户已注册”; } ?>
insert语句没有列。需要是
insert into table(`col1`,`col2`)值('val1','val2')
我目前正在阅读这本非常好的PHP书籍,其中语法如下$query=“insert into cats values(NULL,'Lion','Leo',4)”;他的问题中没有列名。有些人太急于提交答案。并且在这个过程中失败了。
如果(!$result)死了(“出错了”。$con->error);
应该给你一个错误;这是什么?这里是
值(“,$fname”,“$lname”,“$uname”,“$pword”,“uname”)“;
这应该让它进入高速运转。但是…如果你的值包含像
O'Neil
这样的撇号,那将使你失败。退出你的数据。只需像这样改变它:if(!empty($\u POST['first\u name'])&!empty($\u POST['last\u name'])&!empty($\u POST['username'])&!empty($\u POST['password password){//your insert operation}else{//…}和u sql类似:插入到用户(UserId、Firstname、Lastname、Username、PASSWORD)值(NULL、$fname、$lname、$uname、$pword)谢谢,我改变了顺序,现在我得到了这个错误致命的错误:在第44行的C:\xampp\htdocs\php\Website2\register.php中找不到类'mysqli_connect',但我的语法是正确的,这里是$con=new mysqli_connect(“localhost”,“root”,“Website2”);确保您已打开mysqli扩展在脚本上执行:,如果您能找到“mysqli支持”一词,这意味着您已打开mysqli扩展SQL注入部署……。。对不起,谢谢:)这是什么