1

私はphpの初心者なので、優しくしてください.. :-) 答えを探しましたが、何度も同じエラーが発生します。エラーが見つからず、気が狂いそうです!

$query = "SELECT position FROM pages WHERE subject_id = '$subject_id' ORDER BY position DESC LIMIT 1";
$bla = mysql_query($query, $connection);
$position = $bla[0];
$position += 1;

わかりました、上記のコードは私のページの上部にあります。私が理解していることから、これは次のことを行う必要があります。「subject_id」が渡した subject_id と一致するテーブル「pages」から「position」という列を取得し、これを並べ替えて 1 つの値 (最も高い値) を選択します。したがって、1 つの値を持つ 1 つの列ができます。次に、その値を取得して「位置」に配置し、1 ずつ増やします。

しかし、私が返すエラーは次のとおりです。"Column count doesn't match value count at row 1" 繰り返しますが、私は初心者です(別の言語に慣れています)ので、これはおそらく私が忘れていた/間違っていた小さくて愚かなことです..誰か助けてもらえますか?

4

2 に答える 2

5

mysql_query() は、必要なデータではなく、ステートメント ハンドルを返します。最初に行をフェッチする必要があります。

$bla = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_row($bla);
$position = $row[0] + 1;
于 2012-08-10T15:58:46.790 に答える
-1

クエリを次のように変更できます。

$query = "UPDATE pages SET position=position+1 WHERE subject_id = '$subject_id' ORDER BY position DESC LIMIT 1";

次に、単に実行します

mysql_query($query, $connection);

明らかに、同じ最大値の subject_id が 2 つある場合、1 つだけが更新されますが、スクリプトを今セットアップした方法はいずれにせよ同じことを行います。

于 2012-08-10T16:27:04.507 に答える