2

ファイル名を SQL データベースに保存するフォームを作成しました。

ID 列 (自動インクリメント) を SQLDatabase に追加すると、フォームはファイル名の保存を停止しますが、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 

     ?> 

私のデータベースには file_id と file_name の 2 つの列がありますが、先ほど書いたように、file_id は機能しません =/

何か案は ?

4

2 に答える 2

4

SQL クエリを次のように変更する必要があると思います。

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

複数の列が$file_nameある場合、テーブル内のすべての列を列挙しない場合は、文字列を保存する列に名前を付ける必要があります。その後、自動インクリメントが正常に機能するはずです。

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

于 2012-05-12T21:04:18.853 に答える
2

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

問題は、クエリで値を入力するフィールドを指定していないためだと思います。

これを変える:

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

このようなものに

mysql_query("INSERT INTO `files` (`YOURFIELD`) VALUES ('$file_name')") ; 
于 2012-05-12T21:06:36.387 に答える