2010-06-29 48 views
5

我只是試圖獲取當前最高的表的自動遞增值。我不需要知道下一個自動增量是什麼,只是現在表格中的最高值。我正在使用下面的代碼,但不管實際的自動增量是多少,最後一次插入哪張表,上次更新/修改了哪張表,或者我可以看到的其他因素,該值始終返回。有兩個原因讓我感到困惑。首先,我不明白爲什麼數字總是4,第二我不明白爲什麼我回來一個字符串值(用字母和符號),而不是一個整數。 這裏的交易是什麼?從PHP調用的MySQL MAX(id)產生奇怪的值

<?php $highest_id = mysql_query("SELECT MAX(c_id) FROM customers"); ?>

回答

13

mysql_query沒有從該查詢返回的值,它返回一個結果資源。要獲得實際值,您需要使用mysql_fetch_*函數之一,並將其​​從mysql_query中獲得的結果資源傳遞給它。

<?php 
    $result = mysql_query("SELECT MAX(c_id) FROM customers"); 
    $row = mysql_fetch_row($result); 
    $highest_id = $row[0]; 
?> 

或短...

<?php 
    $highest_id = mysql_result(mysql_query("SELECT MAX(c_id) FROM customers"), 0); 
?> 
+0

我覺得有一種愚蠢的張貼在那裏,但是,我確實有這樣的一開始,但返回的結果是''''。我將編輯我的帖子,向您展示我在第一次嘗試的內容(這是您的建議)。 – ubiquibacon 2010-06-29 04:49:51

+0

好吧,我明白我現在做錯了什麼。我原來的代碼使用了'mysql_fetch_array',然後我搞亂了'$ row [0]'中有'0'的地方。謝謝你的幫助! – ubiquibacon 2010-06-29 04:58:52

3

mysql_query返回一個結果句柄,而不是實際的結果。換句話說,你的查詢結果被保存爲資源ID#4(並且不能保證始終是相同的,如果你始終以這種方式看到它,這是巧合)。

要訪問結果,您需要使用類似mysql_fetch_array或同一系列中的其他功能之一。

事情是這樣的:

<?php 

$query = mysql_query("SELECT MAX(c_id) as max FROM customers"); 
$row = mysql_fetch_array($query); 
$highest_id = $row['max']; 

?> 
0
$highest_id = mysql_result(mysql_query("SELECT MAX(c_id) FROM customers")); 
+0

非常簡潔,但應該是: $ highest_id = mysql_result(mysql_query(「SELECT MAX(c_id)FROM customers」),0); – TomWilsonFL 2010-06-29 04:59:48

0

這樣做的2015年道路
假設你有數據庫($這個 - > DB)

$maxid = $this->db->query('SELECT MAX(c_id) FROM `customers`')->fetchColumn(); 
2

這是我的回答:

require_once 'db_cconnection.php'; 
$query = "SELECT MAX(stud_id) FROM student_tbl"; 
$result = mysqli_query($connection, $query); 
$row = mysqli_fetch_row($result); 
echo $row[0]; 

當您使用mysqli_fetch_row時,它將僅提取一行,因爲我們只需要一行。 $row將是一個數組。所以我們需要通過數組索引來獲取它的值。