2017-05-28 43 views
-1

我创建了一个使用MySQL和PHP将用户数据插入数据库的HTML表单。使用PHP将数据表单数据导入到数据库中

HTML表单:

<form action="index.php" method="POST" > 

    <div class="container"> 

     <label for="username"><b>Username</b></label> 
     <input type="text" placeholder="Enter Username" id="username" name="username" required> 

     <label for="psw"><b>Password</b></label> 
     <input type="password" placeholder="Enter Password" id="psw" name="psw" required> 

     <label for="email"><b>Email address</b></label> 
     <input type="text" placeholder="Email address" id="email" name="email" required> 

     <input type="submit" value="Submit" name="Submit"> 

    </div> 
</form> 

的index.php:

// Create connection 
    $dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) 
OR die('Could not connect to MySQL: ' .mysqli_connect_error()); 

if(isset($_POST['Submit'])) { 
    $USER = (isset($_POST['username']) ? $_POST['username'] : null); 
    $PASSWORD = (isset($_POST['psw']) ? $_POST['psw'] : null); 
    $EMAIL = (isset($_POST['email']) ? $_POST['email'] : null); 
    $stmt = $dbc->prepare("INSERT INTO webapp_db.users (username, password, email) VALUES (?, ?, ?)"); 
    $stmt->bind_param("sss", $USER, $PASSWORD, $EMAIL); 
    $stmt->execute(); 

    echo "New records created successfully"; 
} else{ 
    die('Error: '.mysqli_error($dbc)); 
} 
$stmt->close(); 
$dbc->close(); 

而且我没有得到任何错误。它说:“新记录创建成功”但没有任何创建

任何想法的问题是什么?谢谢你在前进

+0

现在你已经编辑了你的代码,你应该编辑你所得到的错误信息。你现在不会得到未定义的索引错误,现在它们被包含在'isset'检查中。 – Andy

+0

@安迪刚刚做到了! – programmer44

+0

很酷。我还看到一些其他问题,可能只是复制/粘贴问题。 '$ _post ['Submit']'应该是'$ _POST ['Submit']',并且'USER ='应该是'$ USER =' – Andy

回答

1

尝试包裹检查到isset()函数的语句,像这样:

// Create connection 
$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) OR die('Could not connect to MySQL: ' .mysqli_connect_error()); 

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

    $USER = (isset($_POST['username']) ? $_POST['username'] : null); 
    $PASSWORD = (isset($_POST['psw']) ? $_POST['psw'] : null); 
    $EMAIL = (isset($_POST['email']) ? $_POST['email'] : null); 

    $stmt = $dbc->prepare("INSERT INTO webapp_db.users (username, password, email) VALUES (?, ?, ?)"); 
    $stmt->bind_param("sss", $USER, $PASSWORD, $EMAIL); 
    $stmt->execute(); 

    echo "New records created successfully"; 
} else{ 
    die('Error: '.mysqli_error($dbc)); 
} 
$stmt->close(); 
$dbc->close(); 
+0

我会将issets 'if(isset($ _ POST ['Submit'])){' – michalzuber

+0

我已经试过了。现在它不会打印任何错误,它仍然不会将数据插入到数据库中。 – programmer44

+1

@michalzuber好点,移动它。 – WarriorXK

0

好吧,记得execute函数返回一个布尔值。尝试检查如果查询得到了成功的或不执行:

$executed = $stmt->execute(); 

if ($executed == true) { // or just "if ($executed) {" if you prefer 
    echo "New records created successfully"; 
} else { 
    echo "Oops! Something went wrong"; 
} 

但是,如果你需要的东西更精确,...与errorInfo函数,该函数返回一个数组尝试。

if ($executed == 1) { 
    echo "New records created successfully"; 
} else { 
    print_r($stmt->errorInfo()); 
} 
+1

我试过了。这是我得到的错误: Array([0] => Array([errno] => 1048 [sqlstate] => 23000 [error] =>列'username'不能为空)[1] => Array([errno] => 1048 [sqlstate] => 23000 [error] =>列'username'不能为空)) – programmer44

+0

尝试bindParam而不是bind_param – sensorario

+0

现在错误:调用未定义方法mysqli_stmt :: bindParam() – programmer44

相关问题