1

我有一个带有动态表的页面,其中填充了来自 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);
}
?>`

$name从 checkIt.php 只得到一个字。我想从 mysql 中获取完整的数据,以便 DELETE 正确执行。有什么建议么?提前致谢!

4

1 回答 1

4

您需要将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>";

应该解决问题。

此外,请务必转义$_POST您在查询中使用的参数,否则您很容易受到 SQL 注入的攻击。

于 2012-08-06T17:16:52.403 回答