2014-10-18 144 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> 
"; 
?>