2012-09-13 90 views
1

我想在表格中填寫網站的成員,並在此表中選中複選框並按下「刪除」按鈕以從成員中刪除此成員表,並從應用程序表中刪除他的應用程序。我的代碼,當我點擊刪除按鈕,它打印我 「查詢失敗」使用複選框和按鈕從MySQL表中刪除行

這是我的代碼:

<?php 
    require_once('config.php'); 
    $errmsg_arr = array(); 
    $errflag = false; 
    $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 
    if(!$link) { 
     die('Failed to connect to server: ' . mysql_error()); 
    } 
    $db = mysql_select_db(DB_DATABASE); 
    if(!$db) { 
     die("Unable to select database"); 
    } 
    $data = mysql_query("SELECT * FROM members ") or die(mysql_error()); 
    echo ' <form action="members-exec.php"> 
      <table width="760" border=1> 
         <tr>'; 
          if(isset($_SESSION['SESS_RANK'])) { 
           echo ' 
            <th></th>'; 
          } 
          echo ' 
          <th>Служител:</th> 
          <th>Отпуск отпреди 2009год.</th> 
          <th>Отпуск от мин. год.</th> 
          <th>Отпуск от тек. год.</th> 

         </tr>'; 
     while($info = mysql_fetch_array($data)) 
      { 
       echo ' 
         <tr>'; 
          if(isset($_SESSION['SESS_RANK'])) { 
          echo ' 
           <td> 
            <input type="checkbox" name="'.$info['firstname'] .' '.$info['lastname'] .'" value="'.$info['firstname'] .' '.$info['lastname'] .'" /> 
           </td>'; 
          } 
          echo ' 
          <td>'.$info['firstname'] .' '.$info['lastname'] .'</td> 
          <td>'.$info['predi'] .'</td> 
          <td>'.$info['minali'] .'</td> 
          <td>'.$info['tekushti'] .'</td>'; 
          } 

        echo' </tr> '; 
    echo '</table>'; 
    if(isset($_SESSION['SESS_RANK'])) { 
     echo ' 
     <br> <input type="submit" name="remove" value="Delete" /></form>'; 
    } 
?> 

這是我的PHP部分:

<?php 
      session_start(); 
      require_once('config.php'); 
      $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 
      if(!$link) { 
       die('Failed to connect to server: ' . mysql_error()); 
      } 
      $db = mysql_select_db(DB_DATABASE); 
      if(!$db) { 
       die("Unable to select database"); 
      } 

      $qry = "DELETE FROM members WHERE login='$login' AND passwd='".md5($_POST['password'])."'" && "DELETE FROM applications WHERE userfname = '$userfname'"; 
      $result = mysql_query($qry); 
      if($result) { 
       header("location: members.php"); 
       exit(); 
      }else { 
       die("Query failed"); 
      } 
     ?> 

編輯:

<?php 
       session_start(); 
       require_once('config.php'); 
       $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 
       if(!$link) { 
        die('Failed to connect to server: ' . mysql_error()); 
       } 
       $db = mysql_select_db(DB_DATABASE); 
       if(!$db) { 
        die("Unable to select database"); 
       } 

       $qry = "DELETE FROM members WHERE login='$login' AND passwd='".md5($_POST['password'])."'" ; 
$result = mysql_query($qry); 
$qry = "DELETE FROM applications WHERE userfname = '$userfname'"; 
       $result = mysql_query($qry); 
       if($result) { 
        header("location: members.php"); 
        exit(); 
       }else { 
        die("Query failed"); 
       } 
      ?> 
+0

取出的mysql_query的@盈。這可能會抑制錯誤消息 - http://php.net/manual/en/language.operators.errorcontrol.php –

+0

@ JLC007這是真的,但那不是他的問題,在這種情況下,他試圖執行兩個刪除查詢作爲單個查詢並且數據庫拒絕它。 – Fluffeh

回答

1
$qry = "DELETE FROM members WHERE login='$login' AND passwd='".md5($_POST['password'])."'" 
&& "DELETE FROM applications WHERE userfname = '$userfname'"; 

有您的問題 - 你試圖用一次調用來做兩個SQL語句,而mysql_query不會讓你這樣做。它應該工作,如果你做兩個單獨的查詢。

無論其

你應該看看移動mysqli_*或PDO - mysql_*已被棄用。你也可以直接使用mysqli do multiple queries in one call;並且它們都使用綁定參數,這可以幫助您編寫更安全的代碼。

+0

+1打敗了我和它更健康的答案:) – Fluffeh

+0

@andrewsi我編輯了這個,但是它仍然沒有任何想法?它只是刷新當前頁面。 – w4kv

+0

您只運行第二個查詢。 – andrewsi

1

您試圖在一個查詢中執行兩條刪除語句。這是一個禁忌。

您需要將語句分成兩個執行:

$qry = "DELETE FROM members WHERE login='$login' AND passwd='".md5($_POST['password'])."'"; 
$result = mysql_query($qry); 
$qry="DELETE FROM applications WHERE userfname = '$userfname'"; 
$result = mysql_query($qry); 
+0

這是一些急需的'mysql_real_escape_string'。 – tadman

+0

@Fluffeh它仍然無法正常工作。它只是刷新頁面,這就是全部。 – w4kv

+0

@ w4kv you missed a';'''qry =「DELETE FROM members WHERE login ='$ login'AND ...':) – Fluffeh

0

你總是可以嘗試使用mysqli_multi_query()

+0

我不知道如何使用它只是簡單地將mysql_query與mysqli_multi_query進行交換嗎 – w4kv

+0

它涉及到使用'mysqli',這是一個非常**好主意。 – tadman

+0

這篇文章的第二個答案解釋了一個例子。 http://stackoverflow.com/questions/4667596/cannot-figure-out-how-to-run-a-mysqli-multi-query-and-use-the-results-from-the-l –

相關問題