mysql LAST_INSERT_ID () вызывает некоторые проблемы с SQL при возврате полученного значения

0

Мне нужна помощь в выяснении, почему следующий сценарий не работает. Я пытаюсь получить значение из последнего обновленного идентификатора в mysql, а затем передать это значение через javascript на вызов ajax, который вызывает страницу .php, которая также вызывает другую функцию "ZEND_emaiL" на другой php-странице.

На первой странице php, которая извлекает идентификатор из mysql LAST_INSERT_ID(), если я жестко кодирую значение "100", это работает, но если я использую значение, возвращаемое из LAST_INSERT_ID(), это вызывает сбой.

Здесь php-код для LAST_INSERT_ID():

$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;, тогда он будет работать.

Любые идеи? Благодарим вас за помощь.

Ниже приведены значения, полученные с php-страницы, содержащей функцию ZEND_email(). Я схватил их для целей отладки, надеясь, что это поможет.

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ для жесткого кодирования:

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?
  • 0
    возможно глупый вопрос, но в вашем ZNED_email, где определяется объект $ sql_str? Также вы можете объяснить, что вы пытаетесь сделать, а что именно не работает.
Показать ещё 2 комментария
Теги:

3 ответа

0
Лучший ответ

Пришлось отказаться от этого кода... не смог получить все, чтобы работать с функцией для приложения, поэтому мы его бросили. Благодарим за помощь.

0

Трудно сказать из этих фрагментов кода. Лучше проверьте, что происходит на стороне клиента.
Например. с firebug вы можете как проверить фактические данные ответа, так и вставить код javascript.

0

вы знаете, что можете использовать mysql_insert_id()? см. http://uk.php.net/manual/en/function.mysql-insert-id.php, который даст вам значение INT напрямую,

btw, чтобы преобразовать переменную в целое число, которое вы можете использовать:

$foo = (int) $bar

или

$foo = intval($bar);

или

$foo = settype($bar,'int');
  • 0
    ах, не знал об этом .... однако проблема все еще существует?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню