php无法使用mysql中的空格读取数据

时间:2012-08-06 17:07:09

标签: php mysql

我有一个带有动态表的页面,填充了来自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正确执行。 有什么建议?提前谢谢!

1 个答案:

答案 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注入攻击。