2014-10-18 5 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 нет никаких ошибок, и каждая скобка должна быть в порядке –

+0

Можете ли вы уточнить ситуацию? Можете ли вы написать в базу данных? Что произойдет, если вы услышите наши вары, у них есть данные? Есть ли ошибки в вашем файле журнала? – James

+0

Я могу писать в базу данных непосредственно в PMA, но он не пишет из файла, я действительно новичок, поэтому у меня нет файлов журналов. –

ответ

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

Должен быть только один экземпляр 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

Спасибо, я это наблюдал, но он все еще не пишет в БД:/ –

+0

Можем ли мы увидеть результаты добавления этого кода после вашего ' $ db-> exec ($ insert_user); 'line:' var_dump ($ db-> errorInfo()); ' –

+1

Спасибо, я обязательно его использую, я бы дал вам репутацию, но я не могу дать это пока что, но, похоже, сейчас работает, когда я удалил эту бессмысленную проверку ник и электронной почты, которая была довольно потрепанной –

0

Я стерт, что не работает Email & чек Ник и не похоже на работу. Я не знаю, какова была эта ошибка, но, похоже, сейчас работает

<?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> 
"; 
?> 
Смежные вопросы