2014-10-18 142 views
0

我在寫註冊表單時遇到問題,數據庫應該連接(它沒有拋出任何錯誤),但它只是沒有說任何東西,所以我不知道如何解決這個。 其尚未完成,但我現在需要解決擺在首位數據庫的問題,我會成爲真的,如果你幫我MySQL插入沒有插入

<?php 
     session_start(); 
     include "_DB.php"; 
     if($_POST["btnODESLAT"]) 
     { 
     $db = new PDO(
    "mysql:host=" .dbserver. ";dbname=" .dbname,dbuser,dbpass, 
    array(
     PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8", 
     PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET utf8" 
    ) 
); 
     $pass = htmlspecialchars($_POST["pass"]); 
     $pass2 = htmlspecialchars($_POST["pass2"]); 
     $email = htmlspecialchars($_POST["email"]); 
     $nick = htmlspecialchars($_POST["nick"]); 
     $sex = htmlspecialchars($_POST["sex"]); 
     if($pass == $pass2) 
     { 
      $check_nick = $db->query("SELECT * FROM tblOSOBA WHERE NICK = '$nick'"); 
      $check2_nick = $check_nick->fetchAll(PDO::FETCH_ASSOC); 
      foreach($check2_nick as $check3_nick) 
      { 
       $check_final_nick = $check3_nick["COUNT(*)"];  
      } 
      } 
      if($check_final_nick == "0")    
      { 
       $insert_user = "INSERT INTO `tblOSOBA`(`ID_OSOBA`, `NICK`, `HESLO`, `POHLAVI_ID`, `EMAIL`, `POHLAVI_ID`) VALUES (NULL, '$nick', '".md5($pass)."', '".$_POST["sex"]."', '$email', $sex)"; 
       $db->exec($insert_user); 

       $final= $db->query("SELECT * FROM tblOSOBA WHERE NICK='".$_POST["nick"]."'"); 
       $results = $final->fetchAll(PDO::FETCH_ASSOC); 
       foreach($results as $result) 
       { 
       $_SESSION["id_user"] = $result["ID_OSOBA"]; 
       }    
       $_SESSION["login"] = "101010"; 
       } 
       else{ 
       echo "huehue"; 
       } 
     } 



echo " 
<HTML> 
    <HEAD> 
    <META http-equiv='content-type' content='text/html; charset=UTF-8'> 
    </HEAD> 
    <BODY> 

      <FORM id='sidebar' action='".$_SERVER['PHP_SELF']."' method='POST'> 
        <INPUT type='text' placeholder='Nick' name='nick'><BR> 
        <INPUT type='password' placeholder='Pass' name='pass'><BR> 
      <INPUT type='password' placeholder='Pass' name='pass2'><BR> 
      <INPUT type='text' placeholder='Email' name='email'><BR> 
        <p>Pohlaví<p><BR> 
        <INPUT type='radio' name='sex' value='2'>Muž<BR> 
        <INPUT type='radio' name='sex' value='1'>Žena<BR>  
        <INPUT type='submit' name='btnODESLAT' value='Odeslat'>     
      </FORM> 
    </BODY> 
</HTML> 
"; 
?> 
+0

Dreamweaver說沒有任何語法錯誤,但我沒有它連接到FTP。在pspad中也沒有任何錯誤,並且每個支架都應該沒問題 – 2014-10-18 22:43:50

+0

您能更具體地瞭解情況嗎?你可以寫入數據庫嗎?如果你迴應我們的變數,他們有數據會發生什麼?日誌文件中是否有錯誤? – James 2014-10-18 22:44:27

+0

我可以在PMA中直接寫入數據庫,但它不是從文件寫入,我真的是一個初學者,所以我沒有任何日誌文件 – 2014-10-18 22:46:11

回答

0

您有重複列讚賞。

  $insert_user = "INSERT INTO `tblOSOBA`(`ID_OSOBA`, `NICK`, `HESLO`, `POHLAVI_ID`, `EMAIL`, `POHLAVI_ID`) VALUES (NULL, '$nick', '".md5($pass)."', '".$_POST["sex"]."', '$email', $sex)"; 
      $db->exec($insert_user); 

應該只有1 POHLAVI_ID

  $insert_user = "INSERT INTO `tblOSOBA`(`ID_OSOBA`, `NICK`, `HESLO`, `EMAIL`, `POHLAVI_ID`) VALUES (NULL, '$nick', '".md5($pass)."', '$email', $sex)"; 
      $db->exec($insert_user); 

的情況下順便說一句,PDO有一個內置的方法來獲得最後插入的ID。你可以用這個替換整個塊

  $final= $db->query("SELECT * FROM tblOSOBA WHERE NICK='".$_POST["nick"]."'"); 
      $results = $final->fetchAll(PDO::FETCH_ASSOC); 
      foreach($results as $result) 
      { 
      $_SESSION["id_user"] = $result["ID_OSOBA"]; 
      } 

$_SESSION['id_user'] = $db->lastInsertId(); 
+0

謝謝,我監督它,但它仍然沒有寫入DB:/ – 2014-10-18 22:56:55

+0

我們可以看到在你的' $ db-> exec($ insert_user);'line:'var_dump($ db-> errorInfo());' – 2014-10-18 22:58:11

+1

謝謝,我一定會使用它,我會給你一個代表,但是我不能給它只是,但它似乎現在工作,當我抹去那無意義的尼克和電子郵件檢查是相當寒酸 – 2014-10-18 23:03:23

0

我已經刪除,沒有工作電子郵件&尼克檢查,它似乎工作。我不知道那個錯誤是什麼,但它現在似乎工作

<?php 
     session_start(); 
     include "_DB.php"; 
     if($_POST["btnODESLAT"]) 
     { 
     $db = new PDO(
    "mysql:host=" .dbserver. ";dbname=" .dbname,dbuser,dbpass, 
    array(
     PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8", 
     PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET utf8" 
    ) 
); 
     $pass = htmlspecialchars($_POST["pass"]); 
     $pass2 = htmlspecialchars($_POST["pass2"]); 
     $email = htmlspecialchars($_POST["email"]); 
     $nick = htmlspecialchars($_POST["nick"]); 
     $sex = htmlspecialchars($_POST["sex"]); 
     if($pass == $pass2) 
     { 
       $insert_user = "INSERT INTO `tblOSOBA`(`ID_OSOBA`, `NICK`, `HESLO`, `EMAIL`,`POHLAVI_ID`) VALUES (NULL, '$nick', '".md5($pass)."', '$email', $sex)"; 
       $db->query($insert_user); 

       $final= $db->query("SELECT * FROM tblOSOBA WHERE NICK='".$_POST["nick"]."'"); 
       $results = $final->fetchAll(PDO::FETCH_ASSOC); 
       foreach($results as $result) 
       { 
       $_SESSION["id_user"] = $result["ID_OSOBA"]; 
       }    
       $_SESSION["login"] = "101010"; 
       } 
       else{ 
       echo "huehue"; 
       } 
     } 



echo " 
<HTML> 
    <HEAD> 
    <META http-equiv='content-type' content='text/html; charset=UTF-8'> 
    </HEAD> 
    <BODY> 

      <FORM id='sidebar' action='".$_SERVER['PHP_SELF']."' method='POST'> 
        <INPUT type='text' placeholder='Nick' name='nick'><BR> 
        <INPUT type='password' placeholder='Pass' name='pass'><BR> 
      <INPUT type='password' placeholder='Pass' name='pass2'><BR> 
      <INPUT type='text' placeholder='Email' name='email'><BR> 
        <p>Pohlaví<p><BR> 
        <INPUT type='radio' name='sex' value='2'>Muž<BR> 
        <INPUT type='radio' name='sex' value='1'>Žena<BR>  
        <INPUT type='submit' name='btnODESLAT' value='Odeslat'>     
      </FORM> 
    </BODY> 
</HTML> 
"; 
?>