php - 从多个数据库的多个表中删除一行

标签 php mysql

问题就在这里。我有一个看起来有点像这样的 MySQL 数据库:

Table: db1.group_a
-----------
| name    |
-----------
| Alice   |
| Charlie |
-----------

Table: db2.group_b
----------
| name   |
----------
| Debbie |
| Bob    |
----------

(是的,每个表都在不同的数据库中。而且,实际的表具有相似但不同的结构,为了简单起见,我只使用一列。)

每个name在两个数据库中仅出现一次。

现在我需要做的是找到一行(例如,Bob)并将其从其所在的表中删除。我正在考虑从 group_a 中删除然后检查受影响的行,然后执行某种 if (affected_row < 1) { try_in_next_table(); }在 PHP 中。

但是完全在 MySQL 中完成此操作是理想的。有什么办法可以实现这一点吗?

最佳答案

以下是一些场景:

从所有数据库/表中批量删除:

DELETE FROM db1.group_a where name='Bob';
DELETE FROM db2.group_b where name='Bob';

或者查找实际的数据库/表,然后删除(php 脚本):

$db = new mysqli("localhost", "my_user", "my_password", "world");
$tables = array('db1.group_a','db2.group_b');
foreach ($tables as $t)
  if ($query = $db->query("SELECT * from ".$t." WHERE name=".$db->escape_string("Bob")))
    if ($query->num_rows>0) {
      $db->query("DELETE FROM ".$t." WHERE name=".$db->escape_string("Bob"));
      break; // break foreach
    }

或删除而不选择:

$db = new mysqli("localhost", "my_user", "my_password", "world");
$tables = array('db1.group_a','db2.group_b');
foreach ($tables as $t)
  if ($query = $db->query("DELETE FROM ".$t." WHERE name=".$db->escape_string("Bob"))
    if ($query->affected_rows>0)
      break; // break foreach

关于php - 从多个数据库的多个表中删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26230379/

相关文章:

php - 如何在CodeIgniter中为403禁止的错误设置自定义页面

php - 如何通过php向mysql(wamp)数据库中插入数据?

mysql - 添加到现有选择脚本的更新脚本 - 如何在一个脚本中选择然后更新>

php - Mysql error.sql查询语法错误

php - Mysql添加并将它们添加为新列

javascript - 为什么我的图片不会出现?

php - LibCharts PHP X 轴重叠

php - "compressing"或 "defragmenting"数组的内置 PHP 函数是什么?

php - Plupload : Passing a session variable to upload. php 以更新数据库中的头像上传

mySQL:根据另一列的条目对一列求和