我需要一些幫助來找出爲什麼以下方案不起作用。我試圖從mysql中最後更新的ID檢索一個值,然後通過javascript將該值傳遞給調用.php頁面的ajax調用,該頁面也調用另一個PHP頁面中的另一個函數「ZEND_emaiL」。如果我硬編碼值「100」它的工作原理,但如果我使用從LAST_INSERT_ID()返回的值,它會導致失敗。如果我使用從LAST_INSERT_ID()返回的值。mysql LAST_INSERT_ID()在傳回檢索到的值時導致一些SQL問題
這裏的LAST_INSERT_ID()的PHP代碼:
$sql='SELECT LAST_INSERT_ID();';
$last_updated_id = $db->get_var($sql);
$last_updated_id = $last_updated_id+0;//make int
echo $last_updated_id; //send output back to the ajax call
var_dump($last_updated_id); ------------->RETURNS **int 149**
,如果我發回一個硬編碼 「100」 這樣的:echo 100;
然後它工作。
任何想法?感謝您的幫助提前。
以下是從包含ZEND_email()函數的php頁面中檢索的值。爲了調試的目的,我抓住了這些,希望這會有所幫助。
硬編碼的返回值:
var_dump($n_id);---------->Returns **int 100**
var_dump($sqlresult);----->Returns **resource 24**
var_dump($row);----------->Returns **array of data to parse through**
返回值的變量傳遞(失敗):
function ZEND_email($to, $from="", $subject="", $msg="", $notif_id='', $root_dir="")
{
var_dump($notif_id);---------------------->RETURNS **string '100'**
$notif_id = $notif_id+0;//convert to int
var_dump($notif_id);---------------------->RETURNS **int 100**
$n_id = $notif_id;
$xsql = $sql_str->SQL_SELECT_all_notif_attachments($account_id, $n_id);
$sqlresult=mysql_query($xsql);
$row=mysql_fetch_row($sqlresult);
var_dump($n_id);---------------->RETURNS **int 100**
var_dump($sqlresult);----------->RETURNS **resource 24**
var_dump($row);----------------->RETURNS **boolean false**
}
我完全不理解代碼,但您知道LAST_INSERT_ID()僅在記錄插入到相同的mySQL連接時才起作用? – 2010-08-26 21:46:47
也許愚蠢的問題,但在你的ZNED_email定義的$ sql_str對象在哪裏?你也可以解釋你想做什麼,什麼是不行的。 – Rufinus 2010-08-26 22:06:20
你說'最後更新的ID在MySQL'中。 'last_insert_id()'只對INSERT查詢有效。任何其他查詢類型都會導致未定義的行爲。在插入一個圖層和執行'SELECT last_insert_id()'之間,稍後進行的數據庫抽象是什麼? – 2010-08-26 22:20:15