2016-07-29 15 views
0

私はseassionに格納された変数を持っています。セッション変数やその他の情報をフォームに入力してテーブルに挿入したい。私はそれが作成されたが、テーブルに何も表示されていないというメッセージを受け取りました。データベースにセッション変数を格納できません

私はセッション変数をとり、それを "username"に保存します。 私は$ username = $ r ['username']を試しました。しかし動作しません。助けのための

<?php 
    session_start(); 
    if($_SESSION['user']==''){ 
     header("Location:login.php"); 
    }else{ 
     $dbh=new PDO('mysql:dbname=mydb;host=127.0.0.1', 'myusername', 'mypassword'); 


    $sql=$dbh->prepare("SELECT * FROM users WHERE id=?"); 
    $sql->execute(array($_SESSION['user'])); 
    while($r=$sql->fetch()){ 

    $username=$r['username']; <-im not sure if this is correct. 
    $ime=$_POST['ime']; 
    $priimek=$_POST['priimek']; 
    $email=$_POST['email']; 
    $izob=$_POST['izob']; 
    $izk=$_POST['izk']; 
    $prib=$_POST['prib']; 
    $opis=$_POST['opis']; 
     $sql = "INSERT INTO profil (ime, priimek, email, izob, izk, prib, opis) VALUES(`username`,`ime` , `priimek ` , `email` , `izob` , `izk` , `prib` , `opis`)"; 

     try { 
      $dbh->exec($sql); 
      echo " created successfully"; 
     } catch(PDOException $e) { 
      echo $sql . "<br>" . $e->getMessage(); 
     } 
    } 

    $conn = null; 
} 
?> 

CREATE TABLE profil(
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
     username VARCHAR(10), 
     ime VARCHAR(10) NOT NULL, 
     priimek VARCHAR(10) NOT NULL, 
     email VARCHAR(20), 
     izob VARCHAR(20), 
     izk VARCHAR(10), 
     prib VARCHAR(10), 
     opis VARCHAR(100), 
); 

おかげ

+0

'ますprint_r($ r)この'、(あなたは問題があると思う場所の上の行に、結果を貼り付け) – FrankerZ

答えて

0

やあみんな、私はsoulutionを発見したの助けをのthnx。 この行は間違っていた:私は試してみましたが、まだdoesntの仕事

$sql= "INSERT INTO test (`column`) VALUES( '$value1' '$value2)"; 

TNX男

0

2つの問題:

まず、あなただけの挿入]リストの7列名を指定していますが、8つの値を示しました。最も重要なのは、指定しなかった列の名前がusernameの列であり、これがあなたの質問です。次に、挿入物に実際のPHP変数を使用して、バッククォートでエスケープされたカラム名を使用しないでください。次のことを試してみてください。

$sql = "INSERT INTO profil (username, ime, priimek, email, izob, izk, prib, opis) "; 
$sql = $sql . "VALUES(".$username.", ".$ime.", ".$priimek$.", ".$email.", ".$izob.", ".$izk.", ".$prib.", ".$opis.")"; 
+0

。私はそれが変数のユーザー名の問題かもしれないtoughtしかし、私はok.still何もdbで示されているそれをエコーすることができます – OverHeat

0

あなたusernameを削除し、挿入にバッククォートを追加します。

それは次のようにする必要があります:

$sql = "INSERT INTO profil (`ime`, `priimek`, `email`, `izob`, `izk`, ``prib, `opis`) VALUES(`ime` , `priimek ` , `email` , `izob` , `izk` , `prib` , `opis`)"; 
+0

私はユーザー名が必要不可欠です。 $ username = $ r ['username']; echo "$ username";変数を出力します。今私はテーブルにそれを格納する必要があります – OverHeat

関連する問題