1

MySQLデータベースにデータを入力するためのHTMLページを作成しました。同じHTMLページにPHPコードを埋め込みました。これがコードです、

<html>
<head>
</head>
<body>

<?php

/* Database connection operations */
require_once("db_handler.php");

$conn = iniCon();
$db = selectDB($conn);

?>

<b id="loc_caption_1">Enter a new location</b>
<div id="loca">
    <form name="locForm" action="<?php echo $PHP_SELF; ?>" method="post" >
        <table width="300" border="0">
          <tr>
            <td>Location ID</td>
            <td><input type="text" name="lid" readonly="readonly" value="<?php echo $new_id; ?>" style="text-align:right" /></td>
          </tr>
          <tr>
            <td>Code</td>
            <td><input type="text" name="code" style="text-align:right" /></td>
          </tr>
          <tr>
            <td>Location</td>
            <td><input type="text" name="loc" style="text-align:right" /></td>
          </tr>
        </table>
</div>
<br/>
<div id="buttons">
    <input type="reset" value="Clear" /> <input type="submit" value="Save" />
</div>
    </form>

<?php

/* Saving new record */
$id = $_POST["lid"];
$code = $_POST["code"];
$location = $_POST["loc"];

$query = "INSERT INTO locations(LID, Code, Location) VALUES('$id', '$code', '$location')";

if (!mysql_query($query, $conn))
{
    die("Error " . mysql_error());
}
else
{
    echo "<br/><br/>";
    echo "1 record added successfully!";
    echo "<meta http-equiv=\"refresh\" content=\"3;URL=locations.php\">";
}

mysql_close($conn);

?>

</body>
</html>

私が抱えている問題は、データベースにデータを挿入するために記述されたPHPコードブロックが、ページが読み込まれるとすぐに実行されることです。どうすればこれを防ぐことができますか?フォームにデータを入力し、送信ボタンを押してから実行されるまで待機します。

ありがとうございました。

4

9 に答える 9

1
  1. データベースに挿入する前に、$_POSTで使用可能な変数があるかどうかを確認する必要があります。

    if(!empty($ _ POST ["lid"])){
    /*新しいレコードの保存*/ $ id = mysqli_real_escape_string($ _ POST ["lid"]); $ code = mysqli_real_escape_string($ _ POST ["code"]); $ location = mysqli_real_escape_string($ _ POST ["loc"]);

    $ query = "INSERT INTO location(LID、Code、Location)VALUES('$ id'、'$ code'、'$ location')";

    if(!mysql_query($ query、$ conn)){die( "Error" .mysql_error()); } else {echo "

    "; echo "1つのレコードが正常に追加されました!"; エコー ""; }

    mysql_close($ conn); }

  2. mysqli_*関数を使用してください。mysql_*関数は現在減価償却されています。

  3. SQLインジェクションを防ぐために、データベースに挿入する前にmysqli_real_escape_string()を使用してください。
  4. このデータベース挿入領域をページの上部に移動し、「header('location:locations.php');」を使用する必要があります。リダイレクト用。
于 2012-06-28T09:55:42.527 に答える
1

データが送信されたかどうかを確認してから、作業に取り掛かる必要があります。

if (!empty($_POST)) {
    ...
}
于 2012-06-28T09:51:01.590 に答える
1

データを保存するためのコードはif (!empty($_POST))ブロックされている必要があります。

于 2012-06-28T09:51:19.453 に答える
1

送信するかどうかを確認するだけです。

<?php
if(isset($_POST['submit']))  // Check if form submitted or not
{
  --- //Code for insert to database.
}
?>
于 2012-06-28T09:51:34.250 に答える
1

まず、投稿ボタンに次のような名前を付けます

<input type="submit" value="Save" name="GoBtn" />

送信後に実行するコードを以下のラッパー内に配置します

if(isset($_POST['GoBtn'])
{
  //code here
}
于 2012-06-28T09:51:51.063 に答える
1

phpコードをIF内に配置します

if(isset($_POST["submit"])){ // if form is submitted
 // do insert things
}
于 2012-06-28T09:51:52.980 に答える
1

あなたのphpページはフローとして解釈されます:それは最初にフォームを表示し、次にphpコード部分を実行し、null値を挿入することを意味します(私は推測します)。

スクリプト部分では、次のようなものを使用して、フォーム表示コンテキストまたはフォーム送信コンテキストにあるかどうかをテストする必要があります。

if ($_POST) {
   // form submit context
}
于 2012-06-28T09:52:15.567 に答える
1

送信ボタンタグを次のように変更します。

<input type="submit" name="submitForm" value="Save" />

そして、挿入するPHPコードを実行する前に、submitFormを次のように確認します。

if(isset($_POST["submitForm"]){
//follow the insertion PHP code
}
于 2012-06-28T09:52:24.713 に答える
0

投稿されたデータの有無に応じて、PHPコードブロックを実行します。洗練するために、投稿された値を意味的にテストすることもできます。

if ( (array_key_exists('lid', $_POST) 
AND  (array_key_exists('code', $_POST) 
AND  (array_key_exists('loc', $_POST) ) {
   then execute PHP code block
}
于 2012-06-28T10:03:08.603 に答える