2012-05-12 18 views
2

は、SQLデータベースにファイル名を保存するフォームを作成したばかりです。自動インクリメントが更新されない

私は、SQLDatabaseにID列(自動インクリメント)を広告すると、ファイル名を保存するためにフォームが停止しますが、ID行を削除するとすぐに保存が開始されます。

問題を知りません。

これは私のコードの一部

<?php 



    if(isset($_FILES['file_name'])) { 
    $file_name = mysql_real_escape_string($_FILES['file_name']['name']); 
     //Writes the information to the database 

    mysql_query("INSERT INTO `files` VALUES ('$file_name')") ; 
     } 

    //Retrieves data from MySQL 
    $data = mysql_query("SELECT * FROM files") or die(mysql_error()); 
    //Puts it into an array 

    ?> 

ですそして、私のデータベースに2つの列が=/

任意のアイデアをFILE_IDとfile_nameの が、私はちょうど書いたように、FILE_ID文句を言わない作業していますか?

答えて

4

私はあなたがこれまであなたのSQLクエリを変更する必要があると思う:複数の列で

mysql_query("INSERT INTO `files` (`file_name`) VALUES ('$file_name')") ; 

、あなたはあなたがつもりはない場合$file_name文字列が中に保存したいどの列名前を付ける必要がありますテーブルのすべての列を列挙します。その後、自動インクリメントはうまくいくはずです。

実際、問題は自動インクリメントではなく、SQL構文にあります。戻り値をmysql_queryから保存し、返されたものがfalseであるかどうかを確認して、問合せのエラーをチェックする必要があります。エラーメッセージが表示された場合は、mysql_errorに電話してエラーメッセージを確認してください。

+1

のようなものにOPの質問では、彼は各列ごとにそれぞれの値を提供することになっていましたが、1つの値しか提供していませんでした。この方法により、MySQLは自動インクリメントのデフォルト値を提供することができます。 – GoldenNewby

+0

だから、あなたは私にそれを打つ。 – OptimusCrime

+1

これは完璧です:)ありがとう – Dymond

2

IDはauto_incなので、どこでもスクリプトに含める必要はありません。

私はあなたが値を置くためにどのようなフィールドクエリに指定されていないため、問題があると思い

変更この:。

mysql_query("INSERT INTO `files` VALUES ('$file_name')") ; 

をこの

mysql_query("INSERT INTO `files` (`YOURFIELD`) VALUES ('$file_name')") ; 
+0

それは実際に問題だった、私はそれを最初に試みたが、私はそれが間違って書いたようだ:) ありがとうたくさんの友達 – Dymond

関連する問題