2010-04-29 27 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