0

このコードを使用しているページです。メールアドレスを含むdbmsからデータを抽出するphpページがあります。これは機能します。次に、電子メール アドレスとその他の保存されている dbms データを表示します。次に、ユーザーは、emailselected と呼ばれる php ページで設計されたフィールドに「X」を入力するオプションがあります。これも機能します。保存された電子メール アドレスに基づいて新しいフィールドで dbms を更新したいのですが、更新ステートメントが機能しません。助けてください。コードは次のとおりです。

    include("db.php");
if (isset($_POST['ssubmit']))
    {
    $id_save = $test['id'];
    $emailselected_save = $_POST['emailselected'];
    $email_save = $test['email'];

    $rc = mysql_query("UPDATE emails SET selected='$emailselected_save' WHERE id = 'id'");
if (!$result) {
    die('What?: ' . mysql_error());
}
$num = mysql_affected_rows();
printf("Updated %d rows\n", $num);

    echo "<input type='button' value='Email(s) sent' onclick='goBack()' />";
mysql_close($conn);
    } else {echo "hello";}
?>
<form method='post'>
    <div id='headd'>
    <br />
    <input type='button' value='Close this window without Sending' onclick='goBack()' />
    <input type='submit' name='ssubmit' id='ssubmit' value='Send Email Now!!!' />
    <p>Place an "X" in the emails you wish to send!!!</p>
    </div>
        <br /><br/>

<?php
    include("db.php");  
    $result = mysql_query("SELECT * FROM emails WHERE unsubscribe  != 'x' ORDER BY lastname ASC");
            while($test = mysql_fetch_array($result))
            {
?>
    <table border='1' width='78%'>
    <tr align=\"left\">
        <td width='4%'><font color='black'><input type='text' size='1' id='emailselected' name='emailselected' /></font></td>
        <td width='15%'><font color='black'><?php echo $test['lastname']?></font></td>
        <td width='15%'><font color='black'><?php echo $test['firstname']?></font></td>
        <td width='40%'><font color='black'><?php echo $test['email']?></font></td>
        <td width='4%'><font color='black'><?php echo $test['id']?></font></td>
    </tr>
</table>
<?php
            }
?>
</form>
4

1 に答える 1

0

エラーは次のとおりです。

$rc = mysql_query("UPDATE emails SET selected='$emailselected_save' WHERE id = 'id'");

次のようにする必要があります。

$rc = mysql_query("UPDATE emails SET selected='$emailselected_save' WHERE id = '$id_save'");

コードは SQL インジェクションに対して脆弱です。したがって、データをフィルタリングする必要があります。しかし、PDO に切り替えて、準備済みステートメントを使用するだけです。

http://php.net/manual/en/pdo.prepare.php

于 2012-12-13T21:27:55.723 に答える