2013-02-06 63 views
0

我在使用fetch方法時遇到了一些麻煩。代碼如下:PDostatement :: fetch返回false

 $stmt = $db->prepare("INSERT INTO x (name) VALUES (:username)"); 
     $stmt->bindParam(':username', $username); 
     $result = $stmt->execute(); 
     if ($result == '1') { 
      $id = $stmt->fetch(); 
      return $id; 
     } 

執行查詢並插入數據,$ result爲'1'。但是,當我嘗試獲取結果時,它返回false。

任何提示?

+2

無法從INSERT查詢中獲取 –

+0

謝謝。對不起,這個愚蠢的問題。所以我想最好的辦法是在插入後做一個SELECT查詢。 – 4ndr345

+0

取決於你想要做什麼。你想要插入ID?你可以在MySQL中使用'PDO :: lastInsertId'(顯然它不可靠,但我從來沒有遇到過問題)。那或SELECT'LAST_INSERT_ID()'。 –

回答

0

您可以$db->lastInsertId()在MySQL(顯然這是不可靠的,但我從來沒有一個問題,它)。或者運行另一個查詢:SELECT LAST_INSERT_ID()並獲取它。

-1

如果你想獲取插入的行數,與此查詢遵循它:

$rows_inserted = $db->query("SELECT FOUND_ROWS()")->fetchColumn(); 
+0

不要使用PDO作爲流暢的界面。你不能保證query()返回一個對象。它可能在錯誤時返回錯誤。 –