2013-08-16 41 views
1

我正在使用php从mysql中的数据库中的表中删除一行,但它不工作。我甚至不想做任何事情,只需删除一行。下面的代码:DELETE在mysql中使用PHP不工作

mysql_query("DELETE FROM feed WHERE feed = '$feed'") or die("Query failed! with '$feed'"); 

这是行不通的,而这样做

mysql_query("DELETE FROM feed WHERE feed = 'hello'") or die("Query failed! with '$feed'"); 

请帮我...

完整代码(基于注释下):

$feed = $_POST['feed']; 
$date = $_POST['date']; 
$time = $_POST['time']; 
echo $feed; 
echo $date; 
echo $time; 
//$r = mysql_query("DELETE FROM feed WHERE date = '$date' AND time = '$time'") or die("Query failed! with '$feed'"); 
$r = mysql_query ("DELETE FROM feed WHERE feed = '" . mysql_real_escape_string ($feed) . "'") or die ("Query failed with {$feed} and mysql error: " . mysql_error);) 
+1

什么是$ feed? –

+0

其中一个varchar ...一些文本,包括数字和特殊字符 –

+0

为了调试这个,我建议你echo(或vardump)查询字符串的内容,设置一个变量等于SQL文本。例如'$ sql =“SELECT ...”; echo $ sql; $ R =的MySQL查询($ SQL);'我强烈怀疑,也有“特殊字符”,它需要进行转义,或在字符串的长度超过列的最大长度。不太可能,字符集转换可能存在问题。但这些只是猜测。 (如果这是新开发,请使用mysqli_或PDO代替mysql_interface。) – spencer7593

回答

0

试试这个...在$ feed变量周围加上大括号

mysql_query("DELETE FROM feed WHERE feed = '{$feed}'") 
+0

这一个对我来说也不起作用@Becs Carter 'code' mysql_query (“DELETE FROM feed WHERE feed ='{$ feed}'”) 'code' 如果它可以帮助$ feed是varchar –

1

出于调试目的,请打印mysql_error以更好地了解导致错误的原因。

我的猜测是你的$feed可能包含单引号。避开与mysql_real_escape_string

mysql_query ("DELETE FROM feed WHERE feed = '" . mysql_real_escape_string ($feed) . "'") or 
die ("Query failed with {$feed} and mysql error: " . mysql_error()); 

在一个侧面说明,MySQL扩展已经过时,所以你可能要考虑库MySQLi或PDO。

+0

它仍然不能正常工作...我不知道什么问题... here是整个代码 'code' –

+0

你确定$ feed变量不是空白吗? –

+0

它仍然没有工作 这里是整个代码@Sutandiono '代码' ($进料= $ _POST [ '进料']; $日期= $ _POST [ '日期']; $时间= $ _POST [”时间']; 回声$进料; 回波$日期; 回声$时间; \t // $ R =请求mysql_query( “DELETE FROM饲料WHERE日期= '$日期' AND时间= '$时间'”)或死(“查询失败!'');这个工作,但不是我想要的方式 $ r = mysql_query(“DELETE FROM feed WHERE feed ='”。mysql_real_escape_string($ feed)。''“)or die(”Query failed与{$}饲料和mysql的错误:“mysql_error); ) 如果有帮助, $饲料是一个varchar –

0

当你说varchar时,这是一个相当长的字符串,它可能包含一个URL?

如果字符串包含任何反斜杠,这些将被解释为转义字符。另外,您不应该直接从POST变量运行sql查询,也不要使用mysql_real_escape_string()进行清除。

还要确保$ feed var doent有任何带trim的尾随空格($ feed);

+0

它非常长...它的一个varchar(2000) –