我没有很多MySQL的经验,所以很有可能我错过了一些非常明显的东西。
我只是想从(from_=neighbor and to_=id) OR (from_=id and to_=neighbor)
的表中删除记录。问题是记录永远不会被删除。
alert
测试接收id和邻居,并且我知道收到的特定整数与数据库中的记录匹配(我已经三次检查)。这是我正在使用的代码:
$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)
将查询构建为单独的字符串,然后将其转储以查看实际情况:
$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子句导致它无法找到你想要的记录。