2013-02-27 2 views
0

Привет, Im, дублируя строку с несколькими запросами и хотел бы получить mysql_insert_id() из результата. Дублирование работает нормально, но я, похоже, не могу получить от него последний идентификатор.Mysql несколько запросов и mysql_insert_id()?

Вот мой код:

$mysqli = new mysqli("localhost", "xxxx", "xxxx", "xxxx"); 

if ($mysqli->connect_errno) { 
    echo($error_page_header); 
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; 
    echo($error_page_footer); 
    exit; 
} 

$sql = "CREATE TEMPORARY TABLE tmp ENGINE=MEMORY SELECT * FROM test_table WHERE id=1; "; 
$sql.= "UPDATE tmp SET id=NULL; "; 
$sql.= "INSERT INTO test_table SELECT * FROM tmp; "; 
$sql.= "DROP TABLE tmp; "; 

if (!$mysqli->multi_query($sql)) { 
    echo($error_page_header); 
    echo "Multi query failed: (" . $mysqli->errno . ") " . $mysqli->error; 
    echo($error_page_footer); 
    exit; 

} do { 
    if ($res = $mysqli->store_result()) { 
     var_dump($res->fetch_all(MYSQLI_ASSOC)); 
     $res->free(); 
    } 

} while ($mysqli->more_results() && $mysqli->next_result());  

echo('id: ' . mysql_insert_id()); // prints 0 

ответ

1

не смущайтесь .. ext/mysql и mysqli не совместимы и не могут быть использованы друг с другом. Используйте $mysqli->insert_id (это за соединение)

+0

Спасибо, я пропустил всю временную таблицу и следил за примером по ссылке, которую вы отправляете. отлично работает! – Bravebox

Смежные вопросы