php - 具有 NOT LIKE 特定 id 的 PHP MySQL 查询
问题描述
我有 2 张桌子。第一个是messages
,第二个是room
。msg_id
from table 与from tablemessages
相同。我正在做的是选择所有,对于每个人,我想运行一个查询,删除他们的 id 与 msg_id 不匹配的所有房间:id
room
msg_id
我的代码:
$result = mysql_query("SELECT `msg_id` FROM `messages`");
while($row = mysql_fetch_array( $result )) {
$me = $row[0]; //$me as a string
$int = (int)$me;//transform $me's value to int
$result2 = mysql_query("DELETE FROM `room` WHERE `id` NOT LIKE '%" . $int . "%'");}
$result2
无论变量的值如何,查询都会从房间表中删除所有条目$int
。这意味着检查不起作用。如果我将其更改$result2
为此即:
$result2 = mysql_query("DELETE FROM `room` WHERE `id` NOT LIKE '%86%'");
所有条目都将被删除,除了房间条目id = 86
(它工作正常)
基本计划是我必须保留所有与其room
匹配的条目。id
msg_id
解决方案
DELETE FROM `room` WHERE `id` NOT IN (SELECT `msg_id` FROM `messages`)
如果您不能使用子查询,您可以尝试:
$result = mysql_query("SELECT `msg_id` FROM `messages`");
$ids = [];
while($row = mysql_fetch_array($result)) {
$ids[] = (int) $row[0];
}
$result2 = mysql_query("DELETE FROM `room` WHERE `id` NOT IN (" . implode(',', $ids) . "));
并且 PLS 不使用 mysql_query 它已被弃用