我有一个带有动态表的页面,填充了来自mysql数据库的数据。该表不仅仅是一个普通的表,一列包含一个复选框,其值为数据库的id(主键)。但是我要检索的mysql数据在它们之间有空格。
示例:
id|name
1 |Chuck Norris
2 |Bruce Lee
3 |Jackie Chan
从专栏名称来看,我能够得到Chuck,Bruce和Jackie,但不是Norris,Lee和Chan。
我需要的页面是:delete.php和checkIt.php
delete.php的一部分包含 `
$query = "SELECT * FROM account";
$result = mysql_query($query) or die ("Query failed");
$num = mysql_num_rows($result);
echo "<form method='post' action='checkIt.php'><table>";
if($num>0)
{
echo '<tr>
<td></td>
<td>ID</td>
<td>NAME</td>';
echo '</tr>';
while($row = mysql_fetch_array($result))
{
echo "<tr>
<td><input type='checkbox' name='names[]' value=".$row['name']."/></td>
<td>".$row['id']."</td>
<td>".$row['name']."</td>";
echo "</tr>";
}
}
echo "</table><br><input type='submit' value='Delete' /></form>";
?>`
和checkIt.php的一部分包含 `
for ($i=0; $i<count($_POST['names']); $i++)
{
$name = $_POST['names'][$i];
echo " ".$name;
$sql="DELETE from account WHERE name='$name';";
$result=mysql_query($sql);
}
?>`
来自checkIt.php的 $name
只得到一个单词。我想从mysql中获取完整的数据,以便DELETE正确执行。
有什么建议?提前谢谢!
答案 0 :(得分:4)
您需要在复选框输入中用{{1}}括起来。
现在它出现了:
value
将回声更改为:
<input type='checkbox' name='names[]' value=chuck norris/>
应该解决问题。
此外,请务必转义您在查询中使用的echo "<tr>
<td><input type='checkbox' name='names[]' value='".$row['name']."' /></td>
<td>".$row['id']."</td>
<td>".$row['name']."</td>";
参数,否则您很容易受到SQL注入攻击。