2013-05-13 61 views
0
$query = "UPDATE transaction SET c_status = :status WHERE c_name = :name AND c_id = :id"; 

$stmt = $this->handle->prepare($query); 

$stmt->bindParam(':c_status',$status,PDO::PARAM_STR); 
$stmt->bindParam(':c_name',$name,PDO::PARAM_STR); 
$stmt->bindParam(':c_id',$id,PDO::PARAM_STR); 

return $stmt->execute(); 

使用上述語法,我可以更新transaction表中的記錄。然而,我只用返回的是一個布爾值。我想知道是否有辦法可以獲得transaction_id,AUTO_INCREMENT字段中的transaction表,c_idc_name,其中只有一列)和其餘列?獲取更新行的列值

+0

@JoachimIsaksson - 如果我不選擇存儲過程的方法呢?這會限制我不能做到這一點嗎? – fishcracker 2013-05-13 04:24:04

+0

對於MySQL,你必須做一個額外的選擇,所以無論你需要手動執行還是使用存儲過程在一次調用中完成。 – 2013-05-13 04:26:37

回答

3

這個問題與PDO無關,但與一般的mysql無關。

UPDATE查詢不打算返回任何內容。要從數據庫獲得一行,您必須使用SELECT查詢。

+0

儘管如此,許多RDBMS都支持這樣的事情,PostgreSQL支持'UPDATE ... RETURNING'並且SQL Server支持'UPDATE ... OUTPUT'。 MySQL不。 – 2013-05-13 04:33:40

+0

+1我會補充說,如果需要,最好將** c_name **聲明爲唯一的,並且可能會添加** c_count **列。然後,您可以選擇剛剛插入的字符串,並可靠地檢索** c_id **。儘管可能會讓你完全免除這些ID。 – 2013-05-13 04:34:30