2012-03-28 170 views
1

我在使用php执行一个简单的mysql删除查询。我不知道错此查询:如何执行MySql查询?

$delid=$_REQUEST['did']; 
if(($del=mysql_query("delete from achieva_trainee_mail_tble where id='".$delid."'"))==true) 
{ 
    header("location:viewtrainee.php?dl=1"); 
} 
else 
{ 
    echo("<script>alert('Failure please try again later...');</script>"); 
} 

我可以用“$ _REQUEST [”做']页中的“没有”。但它不会重定向到viewtrainee.php页面,它会转到else部分。我为其他文件执行相同的结构,它工作正常。这有什么问题。

+1

首先从“where id = ..”中删除引号,因为您的ID是INTEGER。其次,确保你之前没有任何输出或HTML标签,因为header()只能用于此。 – 2012-03-28 07:56:05

+0

使用var_dump来检查mysql_query返回的结果 – 2012-03-28 07:56:10

+1

使用'mysql_error()'来捕获错误... – Marco 2012-03-28 07:56:46

回答

0

MYSQL_QUERY返回结果,而不是成功的状态...使用mysql_error或mysql_errno这样的:

$didName = 'did'; 
$delId = null; 
$failed = true; 

if(array_key_exists($didName, $_REQUEST)) { 
    $delId = $_REQUEST[$didName]; 
    mysql_query("delete from achieva_trainee_mail_tble where id='".mysql_real_escape_string($delId, $yourConnection)."'", $yourConnection); 

    if(false == mysql_errno($yourConnection)) { 
     $failed = true; 
    } 
} 

if(false == $failed) { 
     header("location:viewtrainee.php?dl=1"); 
} 
else { 
    echo("<script>alert('Failure please try again later...');</script>"); 
} 
+1

你可以使用mysql_error();得到错误信息:这可能是你引用的是未知的表格,除非你的表实际上是被称为“tble” :) 注逃逸* *所有输入数据来自用户的重要性:你必须使用mysql_real_escape_string之前将其放入查询中,以避免使用SQL注入的用户删除整个数据库! – Daan 2012-03-28 08:00:24

+0

我指的是正确的表格。我没有得到任何错误。 – Raj 2012-03-28 08:24:08

1

使用mysql_affected_rows功能。

$delid=$_REQUEST['did']; 

mysql_query("delete from achieva_trainee_mail_tble where id='".$delid."'")); 

if(mysql_affected_rows()) 
{ 
    header("location:viewtrainee.php?dl=1"); 
} 
else 
{ 
    echo("<script>alert('Failure please try again later...');</script>"); 
} 
+0

始终使用mysql_real_escape_string而不是使用quote。即mysql_query(“delete from achieva_trainee_mail_tble where id =”。mysql_real_escape_string($ delid))); – 2012-03-28 08:30:34

+0

哦,是啊!它效果很好。 – Raj 2012-03-28 10:15:35

+0

@Raj,如果解决方案适合您,您应该接受它。谢谢。 :) – 2012-03-28 14:32:45