douqie1852 2014-10-18 22:40
浏览 54
已采纳

MySQL插入不插入

i'm having an issue while writing registration Form, database should be connected(it isn't throwing any errors) but it just isn't saying anything so i don't know how to solve this. it isn't completed yet but i need to solve the database issue in the first place right now, i'd be really appreciated if you help me

    <?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条回答 默认 最新

  • dsa4d4789789 2014-10-18 22:53
    关注

    You have duplicated a column.

              $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);
    

    Should be only 1 instance of 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);
    

    By the way, PDO has an in-built method to get the last insert ID. You can replace this entire block

              $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"]; 
              }   
    

    with:

    $_SESSION['id_user'] = $db->lastInsertId();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办