-6

こんにちは、すべてのコメントを無視してください。データベースにデータを挿入しようとしていますが、クエリまたはスクリプトに何か問題があります。送信ボタンをクリックしてもデータベースに送信されないため、ヘルプまたは提案を追加してください。

<?php

    include("connect.php");

    session_start();

    if( !isset($_SESSION['id']))
    {
        header('Location: ../index.php');
    }

    //foreach($_POST as $key => $val)
    //{
    //    echo '<p> '.$key.'='.$val.' </p>';
    //}  

    $name = $_SESSION['name'];
    $queue = $_POST['queue'];
    //$TarosID = $_POST['TarosID'];
    //$Status = $_POST['Status'];
    //$Reason = $_POST['Reason'];

    $date = date("d/m/y");
    $time = time("h:i:s");

    $query = "INSERT INTO sms_traffic_db.table_data name, date, time, queue, TarosID, Status, Reason VALUES '$name, $date, $time, $queue'";
    $result = mysql_query($query);

    if($result)
    {
        echo "Data Inserted successfully";
    }
    else
    {
        echo "Error";
    }        
    mysql_close();

    ?>
4

5 に答える 5

3

列のリストと値のリストを括弧で囲む必要があります。

あなたが試しecho mysql_error()たなら、あなたはこれを見たでしょう。

また... xkcd

于 2013-10-31T14:19:02.500 に答える
1

値フィールドを確認してください。値は 5 つしかありません。

残りのフィールドは null にする必要があります。

実際のエラーチェックを確認する必要がある場合

   $result = mysql_query($query) or mysql_error();
于 2013-10-31T14:24:26.683 に答える
0

1.挿入構文を修正します。mysqlのドキュメントを確認してください。

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
  col_name=expr
    [, col_name=expr] ... ]

2.非推奨の mysql_query を使用しないでください。mysqli_query を使用してください。

3.あなたのコードはSQLインジェクションに対して脆弱です.stackoverflowで関連するトピックを検索してください

于 2013-10-31T14:21:01.297 に答える
0

ここにあなたのコード:

    $query = "INSERT INTO sms_traffic_db.table_data name, date, time, queue, TarosID, Status, Reason VALUES '$name, $date, $time, $queue'";

挿入する列が 7 つリストされていますが、値は 4 つしかありません。これらの数が一致する必要があるため、MySQL はおそらくエラーをスローしています。

于 2013-10-31T14:22:42.990 に答える
0

データベースへの接続を開く必要があるmysql_connectと思います。そして、クエリを実行するたびに try catch を配置しますPDOクラスを探してください。はるかに簡単で使いやすいです。

編集

申し訳ありませんが、上部にインクルードが表示されませんでしたこれを試してください:

$query = "INSERT INTO sms_traffic_db.table_data (name, date, time, queue, TarosID, Status, Reason) VALUES (".$name.", ".$date.",". $time.", ."$queue.")";

編集2:

だからここに私がやることがあります:

<?php
// in your file connect.php
$databaseName = "sms_traffic_db";
$dbUser = "root";
$dbPassword = "root";
try{
$con = new Pdo('mysql:dbname=$databaseName;host=localhost', 'root', '');
}catch(PDOException $e){
   var_dump($e);
}
?>

    <?php
// in your main code
    session_start();

        if( !isset($_SESSION['id']))
        {
            header('Location: ../index.php');
        }

        $name = $_SESSION['name'];
        $queue = $_POST['queue'];

        $date = date("d/m/y");
        $time = time("h:i:s");

      // The try catch will help you to get the error 
      // I saw that in your query you say that you'll insert 7 columns but you're inserting only 4

 //    Look also if you have clauses like NOT NULL in your database

       try{
    // this will return you a statement object
    // using this, it prevents SQL Injection
    $stmt = $con->prepare('INSERT INTO table_data (name, date, time, queue, TarosID, Status, Reason) VALUES( :name, :date, :time, :queue)');

             $stmt->execute( array( ':name' => $name, ':date' => $date, ':time' => $time
                         ':queue' => $queue
                     ) );

        }catch(PDOException $e){
            var_dump($e); die;
        }


    ?>
于 2013-10-31T14:22:51.413 に答える