由於某些原因,當我填寫我的基本註冊表格時沒有任何問題,它表示一切都已完成,但是當我去看看我的數據庫時,沒有任何內容保存在那裏。不使用PDO準備輸入數據庫表格INSERT
這是我的形式:
<form method="post">
<p id="registryinput">Voornaam:<input name="voornaam" type="text"></p><br>
<p id="registryinput">Tussenvoegsels:<input name="tussenvoegsel" type="text"></p><br>
<p id="registryinput">Achternaam:<input name="achternaam" type="text"></p><br>
<p id="registryinput">E-mail:<input name="email" type="text"></p><br>
<p id="registryinput">Wachtwoord:<input name="wachtwoord" type="password"></p><br>
<p id="registryinput">Herhaal wachtwoord:<input name="herhaalwachtwoord" type="password"></p><br>
<input name="submit" type="submit" value="Registreren">
</form>
這是數據庫連接:
<?php
$host_name = "localhost";
$database = "login";
$username = "root";
$password = "";
try {
$db = new PDO("mysql:host=".$host_name.";dbname=".$database,$username,$password);
}
catch (PDOException $e) {
print "Error!: ".$e->getMessage()."<br/>";
die();
}
?>
這是我用來上傳到數據庫的代碼:
<?php
include("connect.php");
$voornaam = @$_POST["voornaam"];
$tussenvoegsel = @$_POST["tussenvoegsel"];
$achternaam = @$_POST["achternaam"];
$email = @$_POST["email"];
$wachtwoord = @$_POST["wachtwoord"];
$herhaalwachtwoord = @$_POST["herhaalwachtwoord"];
$submit = @$_POST["submit"];
$encpassword = md5($password);
if($submit){
if($voornaam==true){
if($achternaam==true){
if($email==true){
if($wachtwoord==true){
if($herhaalwachtwoord==true){
if($wachtwoord==$herhaalwachtwoord){
if(strlen($voornaam)<50){
if(strlen($tussenvoegsel)<50){
if(strlen($achternaam)<50){
if(strlen($email)<50){
if(strlen($wachtwoord)<50){
$q = $db->prepare("INSERT INTO 'userinfo' ('voornaam','tussenvoegsel','achternaam','email','wachtwoord') VALUES (':voornaam',':tussenvoegsel',':achternaam',':email',':wachtwoord')");
$q->execute(array(':voornaam'=>$voornaam,':tussenvoegsel'=>$tussenvoegsel,':achternaam'=>$achternaam,':email'=>$email,':wachtwoord'=>$wachtwoord));
echo "Registratie succesvol!";
} else {
echo "Wachtwoord langer dan 50 karakters.";
}
} else {
echo "E-mail langer dan 50 karakters.";
}
} else {
echo "Achternaam langer dan 50 karakters.";
}
} else {
echo "Tussenvoegsel langer dan 50 karakters.";
}
} else {
echo "Voornaam langer dan 50 karakters.";
}
} else {
echo "Wachtwoorden zijn niet gelijk.";
}
} else {
echo "Herhaal uw wachtwoord.";
}
} else {
echo "Geen wachtwoord ingevuld.";
}
} else {
echo "Geen e-mail ingevuld.";
}
} else {
echo "Geen achternaam ingevuld.";
}
} else {
echo "Geen voornaam ingevuld.";
}
}
?>
我主要關注的是如果這部分是正確的:
$q = $db->prepare("INSERT INTO 'userinfo' ('voornaam','tussenvoegsel','achternaam','email','wachtwoord') VALUES (':voornaam',':tussenvoegsel',':achternaam',':email',':wachtwoord')");
$q>execute(array(':voornaam'=>$voornaam,':tussenvoegsel'=>$tussenvoegsel,':achternaam'=>$achternaam,':email'=>$email,':wachtwoord'=>$wachtwoord));
不介意的所有值名稱我荷蘭,這樣所有的頁面上的文本是荷蘭
其實我沿着一點點工作,掉在了另一個問題,我的第二個目標是使一個登錄表單使用SELECT *選項,我得到它的工作。唯一的問題是用戶名我使用電子郵件,但當它試圖調用電子郵件的價值(例如[email protected])它出現此錯誤:
致命錯誤:未捕獲異常'PDOException '消息'SQLSTATE [42000]:語法錯誤或訪問衝突:1064您的SQL語法錯誤;請檢查第15行的C:\ wamp \ www \ PWS \ index.php中''gmail.com ='admin''第1行'附近使用的正確語法對應的MySQL服務器版本的手冊 (! )PDOException:SQLSTATE [42000]:語法錯誤或訪問衝突:1064您的SQL語法有錯誤;在第15行的C:\ wamp \ www \ PWS \ index.php第1行附近查看與您的MySQL服務器版本相對應的正確語法的手冊,以便在'@gmail.com ='admin''附近使用。
我知道爲什麼這不起作用,雖然它將電子郵件識別爲值[email protected],其中@ gmail.com由於@而分離。 那麼,怎樣才能更改現有代碼:
<?php
include("connect.php");
$logemail = @$_POST['email'];
$logww = @$_POST['wachtwoord'];
if(isset($_POST['submit'])){
$q2 = $db->prepare("SELECT * FROM userinfo WHERE $logemail = '$logww'");
$q2->execute(array(':email'=>$logemail,':wachtwoord'=>$logww));
echo "Login succesvol!";
}
?>
而且形式:
<form method="post">
E-mail:<input type="text" name="email"><br>
Wachtwoord:<input type="password" name="wachtwoord"><br>
<input type="submit" name="submit" value="Inloggen"><br>
</form>
所以它將接受[email protected]爲1個整體價值,而不是在部分?
真的有必要築巢每'if'內的另一個說法? – George 2014-09-30 14:31:32
我的上帝,它看起來像一個奇怪的金字塔等待跌倒,爲什麼你不能只是結合那些 – Ghost 2014-09-30 14:32:35
我知道這不是最有效的,但我喜歡這種方式,因爲我可以更快找到 – user3307080 2014-09-30 14:41:50