2010-08-26 70 views
0

我需要一些幫助來找出爲什麼以下方案不起作用。我試圖從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** 
} 
+0

我完全不理解代碼,但您知道LAST_INSERT_ID()僅在記錄插入到相同的mySQL連接時才起作用? – 2010-08-26 21:46:47

+0

也許愚蠢的問題,但在你的ZNED_email定義的$ sql_str對象在哪裏?你也可以解釋你想做什麼,什麼是不行的。 – Rufinus 2010-08-26 22:06:20

+0

你說'最後更新的ID在MySQL'中。 'last_insert_id()'只對INSERT查詢有效。任何其他查詢類型都會導致未定義的行爲。在插入一個圖層和執行'SELECT last_insert_id()'之間,稍後進行的數據庫抽象是什麼? – 2010-08-26 22:20:15

回答

0

不得不取消這段代碼...不能把它全部用於應用程序的功能,所以我們放棄了它。謝謝你的幫助。

0

大家都知道,你可以使用mysql_insert_id()? 看到http://uk.php.net/manual/en/function.mysql-insert-id.php這將使你直接一個int值,

順便說一句,一個變量爲整數,您可以使用轉換:

$foo = (int) $bar 

$foo = intval($bar); 

$foo = settype($bar,'int'); 
+0

啊,不知道....但是,問題依然存在? – Ronedog 2010-08-26 21:58:51

0

很難從這些代碼片段中看出來。更好地檢查客戶端的情況。
例如與firebug你可以檢查實際的響應數據,並進入JavaScript代碼。