2015-05-30 40 views
0

有沒有一種方法以類似於lastInsertId的方式獲得最後的選擇ID? 例如:PDO得到最後一個選定的行

<?php 
$stmt = $db->prepare('SELECT * FROM users WHERE user_id = :user_id'); 
$stmt->bindValue(':user_id', $_GET['id'], PDO::PARAM_INT); 
$stmt->execute(); 
$row = $stmt->fetch(PDO::FETCH_OBJ); 
$user_id = $db->lastSelectId('user_id'); // what can I do here? 
?> 

顯然,在上面的例子中,我可以簡單地獲得與用戶$> USER_ID選擇的最後一行ID,但是這不是問題。有任何想法嗎?

+0

如果你做了一個'SELECT *',你可以從數據庫中獲得每個字段。因此,如果'users'內有一個ID字段,您還將從查詢中獲得ID。 – Incubbus

回答

0

不,除閱讀$user->user_id之外別無他法。沒有魔術功能來獲取選擇的最後一個ID。

而這可能是因爲不需要它,因爲select會返回該值本身。你已經在你的問題中顯示了讀取id有多容易。

+0

謝謝你與我確認。 – TimD

0

如果你想從你的數據庫表中選擇最後一個插入的行,沒有一點選擇的所有行,然後尋找最後在一個循環。此外,user_id應該是主鍵,在這種情況下,您的查詢應該只返回一行。

如果user_id是一個自動遞增的字段,那麼您的查詢應該像SELECT * FROM users ORDER BY user_id DESC LIMIT 1一樣,這將返回用戶最大的user_id

我也會建議你保存插入用戶的時間戳,然後你可以做ORDER BY date_added DESC LIMIT 1這將工作,不管user_id的順序如何。

0

如果您正在搜索一個特定用戶,請確保您使用LIMIT 1

$stmt = $db->prepare('SELECT * FROM users WHERE user_id = :user_id LIMIT 1'); 
$stmt->bindValue(':user_id', $_GET['id'], PDO::PARAM_INT); 
$stmt->execute(); 
$user = $stmt->fetch(PDO::FETCH_OBJ); 
echo $user->user_id;