2017-07-05 9 views
1

私は自分のデータベースに新しいデータを挿入できない理由を知りたいと思います。 vardumpでいい結果が得られましたが、何も私のデータベースに追加されませんPHP、SQL挿入しないでください

データベース:c_id = AutoInc。 | a_id | u_id | c_head | c_content | C_DATE = TIMESTAMP

if (isset($_POST['c_submit'])) { 
    $sql_najdi_prihlaseneho_uzivatela = "SELECT * FROM users where u_name = '$_SESSION[username]'"; 
    $vysledokHladania = mysqli_query($connect_to_db, $sql_najdi_prihlaseneho_uzivatela); 
    if (mysqli_num_rows($vysledokHladania) == 1) { 
     while ($db_data_prihlaseneho_uzivatela = mysqli_fetch_assoc($vysledokHladania)) { 
      $sql_vloz_komentar = "INSERT INTO comments (a_id, u_id, c_head, c_content, c_date) VALUES ($_GET[a_id], $db_data_prihlaseneho_uzivatela[u_id], $_POST[c_hlavicka], $_POST[c_obsah], 'NOW()')"; 
      mysqli_query($connect_to_db, $sql_vloz_komentar); 
     } 
    } 
} 
+2

a)にSQLインジェクションからセーバーするプリペアドステートメントを使用します。 b)mysqli_error()をチェックして、あなたのクエリに何が問題なのかを確認します。 – Sirko

+0

また、 'myqsli_result'オブジェクトに対して' count() 'を実行することは意味をなさないので、見つかった行の数を確認する必要があります。 – jeroen

+0

@Sirko mysqli_errorは何も与えません –

答えて

2

あなたは、PHPコードで私たちのDBに現在の日付時刻を格納するdate('Y-m-d h:i:s')を使用することができますし、あなたのクエリであなただけの配列インデックスに「」を置くことを逃しました。
は、それはあなたを助けるこの1

if (isset($_POST['c_submit'])) { 
    $date=date('Y-m-d h:i:s'); 
    $sql_najdi_prihlaseneho_uzivatela = "SELECT * FROM users where u_name = '".$_SESSION['username']."'"; 
    $vysledokHladania = mysqli_query($connect_to_db, $sql_najdi_prihlaseneho_uzivatela); 
    if (mysqli_num_rows($vysledokHladania) == 1) { 
     while ($db_data_prihlaseneho_uzivatela = mysqli_fetch_assoc($vysledokHladania)) { 
      $sql_vloz_komentar = "INSERT INTO comments (a_id, u_id, c_head, c_content, c_date) VALUES 
           (".$_GET['a_id'].",".$db_data_prihlaseneho_uzivatela['u_id']." ,".$_POST['c_hlavicka']." ,".$_POST['c_obsah']." ,$date)"; 
      mysqli_query($connect_to_db, $sql_vloz_komentar); 
     } 
    } 
} 

私の事を試してみてください。

+0

興味深いですが、私はsqlchangeデータベース列TIME STEMPをDATEに変更しますか?または単純なvarchar /テキスト? –

+0

データベース列をvarcharに変更するだけです。 –

+0

いいえworks = \多分問題はa_idにあります。なぜなら、それは他のデータベーステーブルとの関係が1から... –

0

あなたはvarchar文字をエスケープしますか? その他のポーズ可能なエラーは、データベース内の日付形式です。 ポストecho $sql_vloz_komentarビューのための挿入文とテーブルの構造

if (isset($_POST['c_submit'])) { 
    $sql_najdi_prihlaseneho_uzivatela = "SELECT * FROM users where u_name = '$_SESSION[username]'"; 
    $vysledokHladania = mysqli_query($connect_to_db, $sql_najdi_prihlaseneho_uzivatela); 
    if (mysqli_num_rows($vysledokHladania) == 1) { 
     while ($db_data_prihlaseneho_uzivatela = mysqli_fetch_assoc($vysledokHladania)) { 
      $sql_vloz_komentar = "INSERT INTO comments (a_id, u_id, c_head, c_content, c_date) VALUES ($_GET[a_id], $db_data_prihlaseneho_uzivatela[u_id], '$_POST[c_hlavicka]', '$_POST[c_obsah]', 'NOW()')"; 
      mysqli_query($connect_to_db, $sql_vloz_komentar); 
     } 
    } 
} 
関連する問題