2017-05-28 79 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

相關問題