1

データベースにデータを挿入したい。私は7列(ID、ユーザー、パスワード、住所、電話、性別、電子メール)を持つメンバーという名前のテーブルを持っています。カウントを使用して、このような自動番号を作成しました

$no = "SELECT COUNT(ID)FROM member";
$nors = mysql_query($no);
$nors = $nors + 1;
$query = "INSERT INTO member VALUES (".$nors.",'".$user."','".md5($pass)."','".$name."','".$addr."',".$hp.",'".$gender."','".$email."')";

データが 1 つしかないのに、nors の結果が 2 ではなく 6 になるのはなぜですか?

4

4 に答える 4

6

mysql_query値ではなく、結果オブジェクトを返します。COUNT(ID)クエリには、とFROM...の間に必要なスペースもありません。

$no = "SELECT COUNT(ID) AS count FROM member";
$result = mysql_query($no);
$row = mysql_fetch_object($result);
$nors = $row->count;

mysql_*ただし、関数は廃止されており、最終的には完全になくなるため、PDO などのより新しいものを使用することを検討する必要があります。

編集: @andrewsi は、とにかく、MySQL の組み込みの自動インクリメント機能を ID に使用する必要があることをコメントで指摘しました。あなたが現在していることよりもはるかに優れています。

于 2012-05-04T16:16:39.770 に答える
4

これを使用して新しいメンバーの次の ID 番号を生成する場合は、代わりに ID を auto_increment フィールドにすることを検討する必要があります。現状では、2 人のメンバーが同時にサインアップする可能性があり、両方が両方とも同じIDを割り当てられる

于 2012-05-04T16:21:06.983 に答える
2

この行を置き換えます

$nors = mysql_query($no); 

これらの行によって:

$result_handler = mysql_query($no); 
$result = mysql_fetch_array($result_handler);
$nors = $result[0];
于 2012-05-04T16:18:37.723 に答える
2

id フィールドが自動番号に設定されている場合は、挿入する必要はありません。MySql がそれを処理します。新しい行を追加するたびに、自動番号がインクリメントされます。行を削除しても、自動採番は減少しません。

現在 1 行しかない場合に、行を追加および削除した場合、挿入によって ID が連続していない行が生成されます。

于 2012-05-04T16:21:22.310 に答える