1

mysqlデータベースからのデータで満たされた動的テーブルのあるページがあります。テーブルは単なる通常のテーブルではありません。1つの列には、データベースのid(主キー)の値を含むチェックボックスが含まれています。しかし、私が取得したいmysqlからのデータには、それらの間にスペースがあります。

例:

id|name
1 |Chuck Norris
2 |Bruce Lee
3 |Jackie 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);
}
?>`

$namecheckIt.phpから1つの単語のみを取得します。DELETEが正しく実行されるように、mysqlから完全なデータを取得したいと思います。助言がありますか?前もって感謝します!

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 に答える