php/mysql如何删除不同表中的同名字段

标签 php mysql sql sql-delete

您好,我正在构建我的第一个网站,需要一个语句来删除 2 个表中包含用户指定的 Patient_ID 的所有记录:

我试过了

mysql_query("DELETE FROM appointment 
  WHERE Patient_ID='$patid'
  UNION
  DELETE FROM patient 
  WHERE Patient_ID='$patid'");

还有

  mysql_query("DELETE FROM appointment INNER JOIN patient 
  WHERE Patient_ID='$patid'");

非常感谢对此的一些帮助!

提前致谢

最佳答案

我宁愿为两个delete 语句做一个StoredProcedure

DELIMITER $$
CREATE PROCEDURE DeletePatient(IN PatientID INT)
BEGIN
    DELETE FROM appointment WHERE Patient_ID = PatientID;
    DELETE FROM patient WHERE Patient_ID = PatientID;
END $$
DELIMITER ;

在你的 php 脚本上,

mysql_query("CALL DeletePatient($patid)");

作为旁注,查询易受 SQL Injection 攻击如果变量的值(s) 来自外部。请查看下面的文章,了解如何预防它。通过使用 PreparedStatements,您可以摆脱在值周围使用单引号。

关于php/mysql如何删除不同表中的同名字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14875729/

相关文章:

php - 为什么 proc_get_status() 不显示进程已崩溃?

php - 如何按两列对MySQL进行排序?

php - 如何在php中初始化索引?

SQL Server 从另一个表插入数据

c# - 使用 Dapper 将项目列表(可能为空)作为 IN 子句的参数传递

MySQL 连接未按要求工作

php - MySQL查询错误-保留字

php - 如何四舍五入到最接近的千位?

mysql - 如何创建一个迭代表并采用多个参数的 MySQL 条件函数

php - PHPUnit 数据库查询中“创建表”有时会失败