2011-06-26 197 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子句导致它找不到你想要的记录。