2012-01-25 2 views
0

Ive читал о Mysqli multi_query и не мог найти способ сделать это (если его возможно)как использовать результаты первого запроса во втором запросе

$db->multi_query("SELECT id FROM table WHERE session='1'; 
       UPDATE table SET last_login=NOW() WHERE id=table.id"); 

Оно не похоже на работу. Я пытаюсь использовать идентификатор первого запроса для обновления второго. возможно ли это

ответ

0
UPDATE table 
    SET last_login = NOW() 
    WHERE id IN (SELECT id 
        FROM table2 
        WHERE session = '1') 

Это будет обновлять все ваши записи сеансом = '1'. Предполагая, конечно, что подзапрос возвращает более одного набора результатов, который из того, что я вижу, будет.

Это также позволяет отказаться от метода multi_query(), так как это всего лишь один запрос.


В ответ на комментарий:

Согласно http://lists.mysql.com/mysql/219882 это не представляется возможным с MySQL. Хотя я полагаю, вы могли бы пойти на что-то вроде:

$db->multiquery(
    "UPDATE table 
     SET last_login = NOW() 
     WHERE id IN (SELECT id 
         FROM table2 
         WHERE session = '1'); 
    SELECT id 
    FROM table2 
    WHERE session = '1';" 
); 

Что некрасиво, выполняя тот же запрос дважды, но должны делать то, что вы хотите.

+0

есть способ переписать его, чтобы я мог вернуть результат и использовать его ниже в скрипте .. вот что им после. просто интересно, поставил ли я 2 запроса, которые можно превратить в один. –

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