首页 > 解决方案 > 具有 NOT LIKE 特定 id 的 PHP MySQL 查询

问题描述

我有 2 张桌子。第一个是messages,第二个是roommsg_idfrom table 与from tablemessages相同。我正在做的是选择所有,对于每个人,我想运行一个查询,删除他们的 id 与 msg_id 不匹配的所有房间:idroommsg_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匹配的条目。idmsg_id

标签: phpmysql

解决方案


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 它已被弃用


推荐阅读