2011-06-26 19 views
0

私はMySQLに多くの経験がありませんので、非常に明白なものがありません。MySQLデータベースからレコードを削除する

私は単に(from_=neighbor and to_=id) OR (from_=id and to_=neighbor)のテーブルからレコードを削除しようとしています。問題はレコードが決して削除されないことです。

  1. データベースの基本設定(ユーザー名、パスワードなど)は正しく、実際には何度も使用していたインクルードファイルです。
  2. テーブルの名前が正しいです、私は三重チェックしました。
  3. データベースの列の名前が正しく、私は3重チェックしました。
  4. 私はスクリプトがIDと隣人を受け取っていることを知っています。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

Andreas、レコードは削除されません。私は質問を編集します。 –

+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"); 

注意をすることをIクエリを1回だけ実行しています。あなたの2つのクエリは単にWHERE句を再配置しますが、それは無意味です。 (P and Q)はこの場合は(Q and P)とまったく同じです。

クエリテキストを取得したら、MySQLモニタで手動で手動で実行してみてください。同じWHERE句を持つSELECTクエリに変換します(例:

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

これが何かを返すかどうかを確認します。 MySQLはクエリでエラーを吐き出していないので、あなたが望むレコードが見つからない原因となっているのはWHERE句です。

関連する問題