2012-03-28 218 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