Мне нужна помощь в выяснении, почему следующий сценарий не работает. Я пытаюсь получить значение из последнего обновленного идентификатора в 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**
}
Пришлось отказаться от этого кода... не смог получить все, чтобы работать с функцией для приложения, поэтому мы его бросили. Благодарим за помощь.
Трудно сказать из этих фрагментов кода. Лучше проверьте, что происходит на стороне клиента.
Например. с firebug вы можете как проверить фактические данные ответа, так и вставить код javascript.
вы знаете, что можете использовать 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');