2011-06-26 200 views
0

我對MySQL沒有太多的經驗,所以很遺憾我錯過了一些非常明顯的東西。從MySQL數據庫中刪除記錄

我只是試圖從表中刪除一個記錄(from_=neighbor and to_=id) OR (from_=id and to_=neighbor)。問題是記錄從不被刪除。

  1. 基本的數據庫設置(用戶名,密碼等)是正確的,實際上是在我已經使用了很多次的包含文件中。
  2. 表的名稱是正確的,我三重檢查。
  3. 數據庫中列的名稱是正確的,我三重檢查。
  4. 我知道該腳本正在接收id和鄰居根據javascript alert測試,並且我知道收到的特定整數匹配數據庫中的記錄(我三重檢查)。

這是我使用的代碼:

$dbhost = "..."; 
$dbuser = "..."; 
$dbpass = "..."; 
$dbname = "..."; 

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ("Error connecting to mysql"); 
    mysql_select_db($dbname); 

$id = mysql_real_escape_string($_GET['id']); 
$neighbor = mysql_real_escape_string($_GET['neighbor']); 
$result = mysql_query("DELETE FROM jointable WHERE to_='". $id ."' AND from_='".$neighbor."'") or die(mysql_error()); 
$result = mysql_query("DELETE FROM jointable WHERE from_='". $neighbor ."' AND to_='".$id."'") or die(mysql_error()); 
mysql_close($conn);  

echo "<script type='text/javascript'> 
    alert('$id'); 
    alert('$neighbor'); 
    <!-- 
    window.location = 'index.php?node=$id'; 
    //--> 
    </script>"; 
+0

什麼是錯誤? –

+0

安德烈亞斯,該記錄點頭被刪除。我將編輯該問題。 –

+0

你會得到什麼結果或錯誤? – aalku

回答

0

構建查詢到一個單獨的字符串,然後傾倒出來,看看究竟發生了什麼事情:

$sql = <<<EOL 
DELETE FROM jointable 
WHERE (to_ = '$id') AND (from_ = '$neighbor') 
EOL; 
$result = mysql_query($sql) or die(mysql_error()); 

die("<pre>$sql</pre> $result"); 

注意,我只運行一次查詢。你的兩個查詢只是重新排列WHERE子句,這是毫無意義的。 (P and Q)與此例中的(Q and P)完全相同。

一旦你有了查詢文本,請嘗試在MySQL監視器中手動自己運行它,並查看發生了什麼。將其轉換爲具有相同WHERE子句的SELECT查詢,例如

SELECT * 
FROM jointable WHERE (to_ = '$id') AND (from_ = '$neighbor') 

並查看是否返回任何內容。由於MySQL沒有在查詢中吐出一個錯誤,所以很可能是你的WHERE子句導致它找不到你想要的記錄。