4

テーブルの行を数え、結果に 1 を追加しようとしています。このコード スニペットがあります。

$countQuery = "SELECT COUNT(id) FROM donations";
$outcomeQuery = mysql_query($countQuery);
$countUp = mysql_fetch_array($outcomeQuery);
$plusOne = 1; 
$outcome = $countUp;
echo $outcome[0]
    or die(mysql_error());

しかし、これは私にエラーを与えます:

致命的なエラー: サポートされていないオペランドの型です

以前の寄付者が使用していない一意の番号を常に持っているので、これが必要です。

4

4 に答える 4

6

あなたが使用することができます:

SELECT COUNT(id)+1 as IDCount FROM donations

代わりにクエリとして。これにより、計算を行うために PHP をいじる必要がなくなります。引き戻す配列には、すぐに必要な数が含まれます。

編集:ただし、より良い代替手段は、自動的にインクリメントする列タイプを使用することです。MySQL では、これはauto_incrementcreate table 構文の構文で行われます。

これを使用すると、実際にを挿入する必要はありませんが、次のように値を渡しNULLます (ID が Auto_increment を持つフィールドであると仮定します。

insert into tableName (ID,Name) values (null, 'Fluffeh');

したがって、ID 列に値を指定していないことがわかります。データベースが正しい番号を使用します。

于 2012-09-14T12:18:18.010 に答える
3

単純なphpを使用する

$countQuery = mysql_query("SELECT id FROM donations");
$count=mysql_num_rows($countQuery);
$count+=1;
于 2012-09-14T12:34:43.613 に答える
1

COUNT一意の番号を与えることに依存するのは危険です。2 つのプロセスがこのクエリを実行し、両方が試行してコミットするとどうなるでしょうか。突然、同じ値が 2 回得られます。

テーブルの内容に関係なく、ある種のシーケンス関数を実装する方がはるかに安全です。このリンクは、1 つの可能性を示しています。

http://forums.mysql.com/read.php?61,143867,238482#msg-238482

于 2012-09-14T12:22:38.397 に答える
0

この質問は、MySQL データベースに関するものです。AUTO INCREMENT フィールド タイプを使用することをお勧めします。PHP を使用しているため、レコードを挿入した後に ID を知る必要がある場合は、次を使用します。

mysql_query("INSERT INTO mytable (1, 2, 3, 'blah')");
$id = mysql_insert_id();

を参照してくださいmysql_insert_id()

使用する

重複がないことを 100% 確認するために生成された 4 つの乱数

重複がないことを 100% 保証するわけではありません。車輪を再発明しないでください。これにより、一意の増分識別子が使用されることを保証する問題が解決されました。常に機能するとは限らない自作ソリューションの恥ずかしさは必要ありません。

于 2012-11-14T13:37:59.933 に答える