[1839] Re:PHP、MYSQLのBBSで質問です
投稿者:(ぱ)こと管理人
2012/11/21 01:59:57
すみません、これはおそらくバグっています。
記憶が曖昧ですが、ずいぶん前に、新しい掲示板を立ち上げるとき、
「ホームページ上の説明のコード」のとおり、
54: $sql_str = sprintf("select count(*)"
55: . " from message where boardid='%s'",
56: $board_id);
57: $result = mysql_query_or_die($sql_str);
58: $row = mysql_fetch_row($result);
59: if ($row[0] == 0) {
60: $serial_id = 0;
61: } else {
62: $serial_id = $row[0];
63: }
count(*)でレコード数をとった値、とすると、レコードの物理削除を行った場合に
おかしくなるため修正したような気がします(現在は、あまりのspamの多さに
辟易したため管理者権限で物理削除ができるようになっていますが、当初はその
機能はありませんでした)。
それを考慮して、現状では以下のようにmax()を取るようにしたのですが、
$sql_str = sprintf("select max(serialid)"
. " from message where boardid='%s'",
$board_id);
$result = mysql_query_or_die($sql_str);
$row = mysql_fetch_row($result);
if ($row[0] == 0) {
$serial_id = 0;
} else {
$serial_id = $row[0] + 1;
}
その新しい掲示板を立ててからしばらく経ってからのことだったので、
「2回目の投稿」については試していなかったのかと思います。
すみませんが現状こちらではそれを直してテストまでする余裕はありません。
そちらで回避してください。よろしくお願いします。
(serial_idの最小値を1とする、あたりが簡単な気はします)