用php函数从sql数据库中删除

时间:2011-05-26 01:45:16

标签: php mysql sql

我有两个php函数。 deletebooking工作正常,但另一个没有。我不确定将它们组合起来是否更好。

我运行这个调用函数。但是我无法运行deletebookingIf函数。任何人都可以看到任何错误吗?

$idnumber = $_GET['del'];

 if($_GET['del']) {
   deletebookingIf($idnumber);
   deletebooking($idnumber);
 }

function deletebooking($orderID) {    
    $sql = "DELETE FROM bs_reservations 
             WHERE id = '".$orderID."'";

    $result = mysql_query($sql) or die("oopsy, error when tryin to delete events 2");
}

function deletebookingIf($orderID) {        
    $sql = "SELECT DURATION 
              FROM bs_reservations 
             WHERE id = '".$orderID."'";

    $result = mysql_query($sql) or die("oopsy, error when tryin to delete events 2");

    if ($result != "One Day Rental") {
      $orderID2 = $orderID - 1;
      $qq = "DELETE FROM bs_reservations 
              WHERE id = '".$orderID2."'";
      $result = mysql_query($qq) or die("oopsy, error when tryin to delete events 2");
    }
}

2 个答案:

答案 0 :(得分:1)

而不是

if ($result != "One Day Rental") {

你应该:

if ($result) {
    $data = mysql_fetch_assoc($result);
    if ($data['duration'] != 'One Day Rental') {
    // rest of the code

$ result包含一组行,而不是字段的内容。如果该id不是主键,则还应在查询中使用LIMIT 1以确保只返回一行。您还应该使用mysql_num_rows($ result)来确保您拥有该id的条目。

祝你好运!

答案 1 :(得分:0)

您需要使用$result(或类似)函数从select查询中循环mysql_fetch_assoc以从查询中获取行。然后,对于每个匹配的行,您可以将该行ID添加到ID的本地数组中,然后运行带有delete子句的in查询,或者运行delete查询mysql_fetch_assoc块的每次迭代。查看http://php.net/mysql_fetch_assoc以获取一些提示。

抱歉,重读这个我意识到一个例子可能有帮助...

while ($row = mysql_fetch_assoc($result)){
  if ($row['DURATION'] == "One Day Rental"){
    #delete the row
  }

}