0

PHP & MYSQL という本から、簡単な手順で演習を行っています。これには、データベース内の行を更新するための HTML フォームと、HTML コードの入力データをチェックして安全な形式にするためのさまざまな PHP スクリプトが含まれます。ただし、コードは本に書かれているとおりには機能しません。出版社の Web サイトにアクセスしてサンプル コードをダウンロードしましたが、うまくいきませんでした。

その下の行の名前を持つフォームの代わりに、代わりにフォームを取得し、その下に「有効な新しい名前が送信されていません」。次に、その下に、変更したいテーブル内の行の現在の名前。フォームにデータを入力して送信しようとしても、違いはありません。まったく同じページが表示されます。コードは以下です。

<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ensuring security
    </title>
</head>
<body>

<form action="secure.php" method="POST">
    <p>New Name : <input type="text" name="name">
        <input type="submit"></p></form>



<?php

require('../connect_db.php');


if (!empty($POST['name']) && !is_numeric($_POST['name'])) {
    $name = $POST['name'];

    $name = mysqli_real_escape_string($dbc, $name);
    $name = strip_tags($name);

    $q = 'UPDATE towels SET name "' . $name . '" WHERE id= 1';
    mysqli_query($dbc, $q);
} else {
    echo 'No valid new name submitted';
}

$q = 'SELECT * FROM towels WHERE id = 1 ';
$r = mysqli_query($dbc, $q);
while ($row = mysqli_fetch_array($r, MYSQLI_NUM)) {
    echo "<p>Name : $row[1] </p>";
}
mysqli_close($dbc);

これに関するアイデアをいただければ幸いです。私は約 3 時間かけて出版社の Web サイトにアクセスしましたが、まだ振り出しに入っています。

4

1 に答える 1

5

スーパーグローバル配列がない$POSTため、に変更$POST['name']する必要があります$_POST['name']

PHP はその配列を認識できないため、クエリを使用してコードを評価!empty($POST['name'])し、実行することはありません。falseupdate

そして、@BartFriederichs が言ったように、より良い本を購入してください。現在のものから価値あるものを学ぶことはないと思います。

于 2013-09-16T15:35:51.250 に答える