是一个mysql临时表,每个用户访问创建它的脚本是唯一的...?

Spi*_*idE 10 mysql temp-tables

在用户在特定日期之间免费搜索酒店时寻找临时保存搜索结果的方法时,我遇到了临时表.

但是即使在mysql手册中也没有回答某些问题......就像......

  1. 临时表对于执行脚本的每个用户都是唯一的吗?或者当两个不同的用户同时运行脚本时它会被覆盖......?

  2. 桌子何时会被销毁..?当用户关闭浏览器窗口或只是导航脚本运行的页面时......?

谢谢你的澄清......

这是我怎么做的....

$table = "CREATE OR REPLACE TEMPORARY TABLE $free_room(
              room_id INT(5),
              room_name VARCHAR(150),
              max_persons INT(1),
              rooms_free INT(1),
              room_price INT(6),
              hotel_id INT(4),
              hotel_name VARCHAR(100),
              hotel_stars INT(1),
              hotel_type INT(1)) ENGINE=MEMORY";

    $query_getFreeRooms = "INSERT INTO  $free_room
                           SELECT $rooms.room_id,
                                  $rooms.room_name,
                                  $rooms.max_persons,
                                  $rooms.total_rooms - $rooms.booked_rooms AS rooms_free,
                                  $rooms.room_price,
                                  $hotels.hotel_id,
                                  $hotels.hotel_name,
                                  $hotels.hotel_stars,
                                  $hotels.hotel_type
                           FROM   $hotels,$rooms
                           WHERE  $rooms.room_id NOT IN (SELECT room_id
                                                         FROM   $reservations
                                                         WHERE  $dateCheck)
                           AND    $hotels.hotel_city = '$city_search1'
                           AND    $hotels.hotel_id = $rooms.hotel_id
                           AND    $hotels.hotel_deleted = '0'
                           AND    $rooms.room_deleted = '0'";
Run Code Online (Sandbox Code Playgroud)

Pas*_*TIN 30

引用MySQL 手册页CREATE TABLE:

您可以TEMPORARY在创建表时使用该关键字.
一个TEMPORARY表可见只对当前连接,当连接关闭时自动删除.
这意味着两个不同的连接可以使用相同的临时表名,而不会相互冲突或与现有的同名非TEMPORARY表冲突.

考虑到两个用户将具有两个不同的连接,该表对于每个用户将是唯一的.

当创建它的连接关闭时,临时表将被删除 - 在PHP中,至少,这意味着生成页面的脚本结束时(通常,甚至在用户实际读取页面之前)