2010-04-29 114 views
1

我試圖從兩個不同的表中一次刪除兩個錶行,當用戶單擊刪除按鈕,但由於某種原因,我不能得到錶行刪除可以有一個幫助我找出我的腳本有什麼問題?謝謝PHP和MySQL刪除多行腳本問題

這裏是MySQL表。

CREATE TABLE cases (
id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
file VARCHAR(255) NOT NULL, 
case VARCHAR(255) NOT NULL, 
name VARCHAR(255) NOT NULL, 
PRIMARY KEY (id) 
); 

CREATE TABLE users_cases (
id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
cases_id INT UNSIGNED NOT NULL, 
user_id INT UNSIGNED NOT NULL, 
PRIMARY KEY (id) 
); 

這裏是PHP的& MySQL腳本。

if(isset($_POST['delete_case'])) { 

$cases_ids = array(); 

$mysqli = mysqli_connect("localhost", "root", "", "sitename"); 
$dbc = mysqli_query($mysqli,"SELECT cases.*, users_cases.* FROM cases INNER JOIN users_cases ON users_cases.cases_id = cases.id WHERE users_cases.user_id='$user_id'"); 

if (!$dbc) { 
    print mysqli_error($mysqli); 
} else { 
    while($row = mysqli_fetch_array($dbc)){ 
     $cases_ids[] = $row["cases_id"]; 
    } 
} 

foreach($_POST['delete_id'] as $di) { 
    if(in_array($di, $cases_ids)) { 
     $mysqli = mysqli_connect("localhost", "root", "", "sitename"); 
     $dbc = mysqli_query($mysqli,"DELETE FROM users_cases WHERE cases_id = '$delete_id'"); 

     $dbc2 = mysqli_query($mysqli,"DELETE FROM cases WHERE id = '$delete_id'"); 
    } 

} 

} 

這裏是XHTML。

<li> 
<input type="text" name="file[]" size="25" /> 
<input type="text" name="case[]" size="25" /> 
<input type="text" name="name[]" size="25" /> 
<input type="hidden" name="delete_id" value="' . $row['cases_id'] . '" /> 
</li> 

<li> 
<input type="text" name="file[]" size="25" /> 
<input type="text" name="case[]" size="25" /> 
<input type="text" name="name[]" size="25" /> 
<input type="hidden" name="delete_id" value="' . $row['cases_id'] . '" /> 
</li> 

<li> 
<input type="text" name="file[]" size="25" /> 
<input type="text" name="case[]" size="25" /> 
<input type="text" name="name[]" size="25" /> 
<input type="hidden" name="delete_id" value="' . $row['cases_id'] . '" /> 
</li> 
+2

你真的不應該把POST字段直接放到你的SQL查詢中。由於SQL注入攻擊,它可能是一個安全問題。 – Amber 2010-04-29 04:02:04

+0

@Dav,感謝您的建議,我會盡快解決我的代碼,一旦我知道我的代碼有什麼問題。 – oReiLLy 2010-04-29 04:04:27

回答

1

也許我錯在這裏,您可以設置所有其他形式的元素被放入數組EXCEPT delete_id。是否delete_id應該是像這樣的形式的數組?

<li> 
    <input type="text" name="file[]" size="25" /> 
    <input type="text" name="case[]" size="25" /> 
    <input type="text" name="name[]" size="25" /> 
    <input type="hidden" name="delete_id[]" value="' . $row['cases_id'] . '" /> 
</li> 

<li> 
    <input type="text" name="file[]" size="25" /> 
    <input type="text" name="case[]" size="25" /> 
    <input type="text" name="name[]" size="25" /> 
    <input type="hidden" name="delete_id[]" value="' . $row['cases_id'] . '" /> 
</li> 

<li> 
    <input type="text" name="file[]" size="25" /> 
    <input type="text" name="case[]" size="25" /> 
    <input type="text" name="name[]" size="25" /> 
    <input type="hidden" name="delete_id[]" value="' . $row['cases_id'] . '" /> 
</li> 
0

請檢查這一部分,

foreach($_POST['delete_id'] as $di) { 
    if(in_array($di, $cases_ids)) { 
     $mysqli = mysqli_connect("localhost", "root", "", "sitename"); 
     $dbc = mysqli_query($mysqli,"DELETE FROM users_cases WHERE cases_id = '$di'"); 

     $dbc2 = mysqli_query($mysqli,"DELETE FROM cases WHERE id = '$di'"); 
    } 

} 
+0

該文件沒有刪除:(感謝您的幫助 – oReiLLy 2010-04-29 04:13:52