簡體   English   中英

如何將剛剛插入的行從MySql轉換為php變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM