2012-08-10 56 views
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; 

好吧,上面的代碼是在我的頁面的頂部。根據我的理解,這應該做到以下幾點:從表'頁'中獲取名爲'position'的列,其中'subject_id'與我通過的subject_id匹配,並對其進行排序並選擇1值(這將是最高值)。所以我現在會有1個值爲1的列。然後我抓住這個值,把它放在'位置'並用1遞增。

但是我得到的錯誤是:"Column count doesn't match value count at row 1" 再次,我是一個初學者(我習慣於另一種語言),所以這可能是小而愚蠢的,我忘了/做錯了..任何人都可以幫我嗎?

+1

它可能無法回答你的問題,但你應該停止使用'mysql_ *'函數。他們正在被棄用。請使用[PDO](http://php.net/manual/en/book.pdo.php)(自PHP 5.1起支持)或[mysqli](http://php.net/manual/en/book)。 mysqli.php)(自PHP 4.1起支持)。如果你不確定使用哪一個,[閱讀這篇文章](http://stackoverflow.com/questions/13569/mysqli-or-pdo-what-are-the-pros-and-cons)。 – Matt 2012-08-10 15:58:34

+0

什麼是* entire *錯誤信息? – Matt 2012-08-10 15:59:21

+1

這個查詢沒有問題。你正在做一個「插入」的東西,這是搞砸了。 – Matt 2012-08-10 16:00:43

回答

5

mysql_query()返回一個語句句柄,而不是你想要的數據。你必須首先獲取了行:

$bla = mysql_query($query) or die(mysql_error()); 
$row = mysql_fetch_row($bla); 
$position = $row[0] + 1; 
+1

這是真的,但它不會給*列計數不匹配值計數*錯誤。 – Matt 2012-08-10 16:01:39

+0

@馬克乙:謝謝你,這個伎倆。那麼,雖然我一開始並不知道,但是我意識到,在代碼出錯後我沒有正確地執行INSERT語句。當我修正了這個問題(我忽略了),整個事情就像一個魅力! 在我迄今爲止使用的另一種語言中,我可以簡單地從表中選擇一個語句中的某個字段,所以我試圖去習慣這個「mysql_」的東西...... – Malachi 2012-08-10 19:28:14

+0

@Matt:The馬克給我的代碼工作,但你也是對的。這個錯誤來自別的東西:我做了一個INSERT,給了字段(3)和值(4)。然後我意識到我錯過了那裏的一個領域......所以謝謝你讓我檢查另一個地方! – Malachi 2012-08-10 19:30:13

-1

你可以只改變你的查詢:

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

然後只需運行

mysql_query($query, $connection); 

很顯然,如果你有兩個subject_ids具有相同最高價值,只有一個會更新 - 但現在你的腳本設置的方式無論如何也會這樣做。

+0

謝謝,但我不想在那時做一個更新... – Malachi 2012-08-10 19:30:45

+0

這不會幫助OP發現他的錯誤的來源。 – Matt 2012-08-10 19:31:41

相關問題