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,则只有一个会更新 - 但是您现在设置脚本的方式无论如何都会做同样的事情。

于 2012-08-10T16:27:04.507 回答