[英]How to get just inserted row from MySql to a php variable?
我正在使用Zend Framework和MySql創建我的Web應用程序。 目前,我的SQL代碼如下:
public static function newTestResult($testId, $accountId, $score, $deviation, $averageTime)
{
try
{
$db = self::conn();
$statement = "INSERT INTO test_results(test_id, test_person_id, score, standard_deviation, average_answer_time, created_at)
VALUES(" . $testId . ", " . $accountId . ", " . $score . ", " . $deviation . ", " . $averageTime . ", NOW())";
$db->query($statement);
$db->closeConnection();
}
catch(Zend_Db_Exception $e)
{
error_log($e->getMessage());
}
}
現在我要問的是:如何將剛插入的行添加到PHP中的變量? 我想要獲得MySql為該行自動創建的id值。
這是我的表格代碼:
CREATE TABLE test_results(
id int UNSIGNED AUTO_INCREMENT PRIMARY KEY,
test_id int UNSIGNED NOT NULL,
test_person_id int UNSIGNED NOT NULL,
score float UNSIGNED NOT NULL,
standard_deviation float UNSIGNED NOT NULL,
average_answer_time float UNSIGNED NOT NULL,
removed boolean NOT NULL DEFAULT 0,
created_at datetime) CHARACTER SET utf8 COLLATE utf8_general_ci;
看一下MySQL函數“ LAST_INSERT_ID()”
另請參閱此論壇以獲取有關可用方法的更多詳細信息。 http://forums.phpfreaks.com/topic/188084-get-last-mysql-id-using-zend-frameworks/
在“普通” PHP中,我通常使用mysql_函數。 mysql_insert_id()函數返回插入的最后一行的鍵。 我不主張使用Zend方法,而只是提供上下文:
mysql_query(“ INSERT INTO ... query”);
$ id = mysql_insert_id();
然后在編寫與該插入行相關的其他查詢時引用該ID。
嘗試這個:
$query="SELECT id FROM test_results WHERE test_id=$testId";
$id=$db->query($query);
我認為這是您要尋找的,否則您可以將WHERE條件更改為所需的任何內容。
這應該為您提供上一次查詢的最后插入ID。
$db->lastInsertId()
在MySQL手冊中:“如果將記錄插入到包含AUTO_INCREMENT列的表中,則可以通過調用mysql_insert_id()函數來獲取存儲在該列中的值。” 這是指C函數。
在PHP手冊中,建議您改用PDO函數。 http://php.net/manual/zh/function.mysql-insert-id.php PDO::lastInsertId
顯然,“ Zend_Db_Table上的insert()方法將返回最后一個插入ID的值。” http://osdir.com/ml/php.zend.framework.db/2007-04/msg00055.html
要從任何表中獲取最后兩條記錄,可以使用以下查詢
SELECT * FROM aa WHERE ID IN(
(SELECT COUNT(*) FROM aa),
(SELECT COUNT(*) FROM aa)-1
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.