1

フォームを送信すると、次のエラーが表示されます。

Can't added a new post. Incorrect integer value: '' for column 'aid' at row 1

PHP コード:

$insert = mysql_query("INSERT INTO brt_articles VALUES( '', '$post_title', '$des', 
'$date', '$org_date')");    

    if($insert)
    {
        echo "<font color=green>Successfully added a new article.</font>";
        header("Refresh:3; url=allbrtarticle.php");
    }
    else
    {
        echo "<font color=red>Can't added a new post</font>" . 
              mysql_error();
    }

私のローカルホストでは大丈夫です。しかし、サーバーでエラーメッセージが表示されるのはなぜですか?

4

6 に答える 6

2

おそらく、DBの設定はローカルとは異なります。STRICT_TRANS_TABLESモードがオンになっている可能性があります。試してみてSELECT @@GLOBAL.sql_mode;くださいSELECT @@SESSION.sql_mode;

于 2013-02-25T04:48:44.153 に答える
0

フィールドは入力として値をaid受け入れません。''

最も安全な方法は、クエリを送信するときに列名を指定することです。

INSERT INTO brt_articles (title_field, description_field, date_field, org_date, fieldname) VALUES('$post_title', '$des', '$date', '$org_date');

が主キーの場合aidは、クエリでそのフィールドを省略してください

INSERT INTO brt_articles VALUES('$post_title', '$des', '$date', '$org_date')
于 2013-02-25T04:36:46.030 に答える
0

ローカルデータベースでは、その列の値が自動インクリメントに設定されているか、デフォルト値が設定されています。

サーバーデータベースでは、テーブル定義は同じではありません。

テーブル定義を確認して比較し、一貫性を持たせます。

于 2013-02-25T04:42:33.633 に答える
0

試す

"INSERT INTO brt_articles VALUES('".$post_title."', '".$des."', '".$date."', '".$org_date."')"

MySQLがandの場合は自動的に追加するため、最初に削除する''必要はありません。primary keyauto_increment

于 2013-02-25T04:35:02.407 に答える
0

aidは整数の列であり、そこに挿入しようとし''ています。''は数値ではないため、挿入は失敗します。

おそらく、間違ったタイプを自動変換するサーバー設定がありますが、それに依存するべきではありません(あなたがちょうど見つけたように)

于 2013-02-25T04:30:28.500 に答える
0

これにより、エラーエイド(INT)が発生します。これはテーブルの列(最初の列)に含まれています。

自動インクリメントの場合は、''を削除します。

$insert = mysql_query("INSERT INTO brt_articles VALUES('$post_title', '$des', 
'$date', '$org_date')");  

よろしく

于 2013-02-25T04:32:53.167 に答える