MySQL插入不插入

时间:2014-10-18 22:40:00

标签: php mysql insert

我在编写注册表时遇到问题,数据库应该连接(它没有丢失任何错误),但它只是没有说什么,所以我不知道如何解决这个问题。 它尚未完成,但我现在需要首先解决数据库问题,如果你帮助我,我将非常感激

    <?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>
";
?>

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

我已经删除了没有正常工作的Email&amp;尼克检查,它似乎工作。我不知道那个错误是什么,但它现在似乎有用了

    <?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>
";
?>