如何在PHP中的另一个SQL查询中运行SQL查询?

时间:2017-05-07 13:50:25

标签: php mysql sql

如何运行SELECT查询,选择一个ID,用于删除具有该ID的另一个表中的行,然后在其自己的表中删除该ID的行?

到目前为止我的代码:

    $sqel = "SELECT fldRadioCampID FROM tblradiocamp WHERE fldBestelID = '$urlIDbon' AND fldSpotnaam = '$urlDelSpotnaam'";
    $result = mysql_query($link, $sqel);

if (mysql_num_rows($result) > 0) {
    // output data of each row
    while($row = mysql_fetch_assoc($result)) {
        $sqeldelreg = "DELETE FROM tblradioregio WHERE fldRadiocampRegID=" . $row['fldRadioCampID'];

    if (!mysql_query($sqeldelreg)) {

    echo "Error: " . $sqeldelreg . "<br>" . mysql_error($link);

}
    }
} else {
}   
$sqeldel = "DELETE FROM tblradiocamp WHERE fldBestelID='$urlIDbon' AND fldSpotnaam='$urlDelSpotnaam'";

    if (!mysql_query($sqeldel)) {

    echo "Error: " . $sqeldel . "<br>" . mysql_error($link);

我认为我的问题的含义是明确的,如果不是请在下面评论,任何帮助表示赞赏!!

2 个答案:

答案 0 :(得分:0)

您可以创建程序并调用一次。

MYSQL

CREATE PROCEDURE `deleteRowById` (in urlDelSpotnaam varchar(64), in urlIDbon varchar(64) )
BEGIN
declare a int(11);
SELECT fldRadioCampID into a FROM tblradiocamp WHERE fldBestelID = urlIDbon AND fldSpotnaam = urlDelSpotnaam;
if a > 0 then
DELETE FROM tblradioregio WHERE fldRadiocampRegID=a;
DELETE FROM tblradiocamp WHERE fldRadioCampID=a;
END IF;
END

PHP

<?php

$sqel = "call deleteRowById('$urlDelSpotnaam','$urlIDbon')";
$result = mysql_query($link, $sqel);

答案 1 :(得分:0)

运行此查询:

DELETE FROM tblradioregio 
WHERE fldRadiocampRegID = (SELECT 
        fldRadioCampID 
         FROM tblradiocamp 
         WHERE fldBestelID = '$urlIDbon' AND fldSpotnaam = '$urlDelSpotnaam');

请注意,这也可以使用联接而不是子选择来完成;如果子查询可以返回null:

DELETE FROM tblradioregio
    join tblradiocamp b
    on (tblradioregio.fldRadiocampRegID = b.fldRadioCampID)
    WHERE b.fldBestelID = '$urlIDbon' 
      AND b.fldSpotnaam ='$urlDelSpotnaam';