5

こんにちは、私はデータを mysql データベースに入れるための基本的な Web フォームを持っています。データベースに正しく接続されているかどうかを報告するコードを作成しました。フォームの完成時にテストしたところ、期待どおりの動作をしているようです。しかし、データベースに移動したときに、実際にはデータが入力されていませんか? これをローカルとサーバーで試しましたが、どちらも同じことをしています。これは、何か間違ったことをした場合に備えて、ローカル マシンで MAMP でテストするために使用した 2 つの .php フォームです。

virtualWalkLog.php

<form action="hazardsform.php" method="POST"  />
  <p>ROUTE: <input type="text" name="ROUTE" /></p>
  <p>ADDRESS: <input type="text" name="ADDRESS" /></p>
  <p>LATITUDE: <input type="text" name="LATITUDE" /></p>
  <p>LONGITUDE: <input type="text" name="LONGITUDE" /></p>
  <p>HAZARD: <input type="text" name="HAZARD" /></p>
  <p>RISK: <input type="text" name="RISK" /></p>
  <input type="submit" value="Submit" />
</form>

ハザードフォーム.php

<?php

define('DB_NAME', 'virtualWalkLog');
define('DB_USER', 'root');
define('DB_PASSWORD', 'root');
define('DB_HOST', 'localhost');

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

if (!$link) {
     die('Could not connect: ' . mysql_error());
     }

     $db_selected = mysql_select_db(DB_NAME, $link);

     if (!$db_selected) {
     die('Can\'t use ' . DB_NAME . ': ' . mysql_error());
     }

     $value = $_POST['ROUTE'];
     $value = $_POST['ADDRESS'];
     $value = $_POST['LATITUDE'];
     $value = $_POST['LONGITUTE'];
     $value = $_POST['HAZARD'];
     $value = $_POST['RISK'];

     $sql = "INSERT INTO rmbhazards (ROUTE, ADDRESS, LATITUDE, LONGITUDE, HAZARD, RISK) VALUES ('$value', '$value2', 
     '$value3', '$value4', '$value5', '$value6')";

     mysql_close();

よろしくお願いします

4

6 に答える 6

6

queryこれが、データが挿入されない理由です。後に配置してみてください

$sql = "INSERT INTO rmbhazards (ROUTE, ADDRESS, LATITUDE, LONGITUDE, HAZARD, RISK) VALUES ('$value', '$value2', '$value3', '$value4', '$value5', '$value6')";

これ

$result = mysql_query($sql);

また、すべての値が 1 つの変数$valueにあるため、テーブルですべて同じ結果になるため、クエリに合わせてこれに変更します

 $value = $_POST['ROUTE'];
 $value2 = $_POST['ADDRESS'];
 $value3 = $_POST['LATITUDE'];
 $value4 = $_POST['LONGITUTE'];
 $value5 = $_POST['HAZARD'];
 $value6 = $_POST['RISK'];

また、API は廃止されているため、API の使用を停止することをお勧めします。 またはmysql_に切り替えてください。PDOmysqli

さらに、準備が整いましたmysql injection。それについてのすべてを説明する素晴らしいチュートリアルがここにあります-> PHPでSQLインジェクションを防ぐにはどうすればよいですか?

于 2013-04-21T08:49:42.687 に答える
6

スクリプトをすばやく実行すると、後で呼び出す必要がありmysql_query($sql)ます

$sql = "INSERT INTO rmbhazards (ROUTE, ADDRESS, LATITUDE, LONGITUDE, HAZARD, RISK) VALUES ('$value', '$value2', '$value3', '$value4', '$value5', '$value6')";

mysql_sqlquery は実際にクエリを実行します。

また、$value一意である必要があります

 $value = $_POST['ROUTE'];
 $value2 = $_POST['ADDRESS'];
 $value3 = $_POST['LATITUDE'];

 -----

提案あなたは始めたばかりなので..コンセプトだけのためにmysql_ *を試すことをお勧めしますが、またはmysqli_*..SQLPDOインジェクションについても知っておく必要があります

ここにあなたを助けるためのいくつかのチュートリアルがあります

http://php.net/manual/en/security.database.sql-injection.php

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

http://php.net/manual/en/book.mysqli.php

于 2013-04-21T08:52:16.770 に答える
3

$valueここでは 1 つの変数だけに値を代入しています

 $value = $_POST['ROUTE'];
 $value = $_POST['ADDRESS'];
 $value = $_POST['LATITUDE'];
 $value = $_POST['LONGITUTE'];
 $value = $_POST['HAZARD'];
 $value = $_POST['RISK'];

する必要があります

 $value = $_POST['ROUTE'];
 $value2 = $_POST['ADDRESS'];
 $value3 = $_POST['LATITUDE'];
 $value4 = $_POST['LONGITUTE'];
 $value5 = $_POST['HAZARD'];
 $value6 = $_POST['RISK'];

mysql_query($sql);また、クエリを実行するために呼び出します。

于 2013-04-21T08:51:43.493 に答える
2

すべての入力フィールドの値を 1 つの変数にキャプチャしています。動作させるには mysql_query を実行する必要があります。これを変える :-

     $value = $_POST['ROUTE'];
     $value = $_POST['ADDRESS'];
     $value = $_POST['LATITUDE'];
     $value = $_POST['LONGITUTE'];
     $value = $_POST['HAZARD'];
     $value = $_POST['RISK'];

に:-

 $value = $_POST['ROUTE'];
 $value2 = $_POST['ADDRESS'];
 $value3 = $_POST['LATITUDE'];
 $value4 = $_POST['LONGITUTE'];
 $value5 = $_POST['HAZARD'];
 $value6 = $_POST['RISK'];

それが完了したら、mysql_query($sql) を呼び出してクエリを実行する必要があります。

于 2013-04-21T08:49:45.683 に答える
2

名前を変更するだけです:

$value = $_POST['ROUTE'];
$value2 = $_POST['ADDRESS'];
$value3 = $_POST['LATITUDE'];
$value4 = $_POST['LONGITUTE'];
$value5 = $_POST['HAZARD'];
$value6 = $_POST['RISK'];
于 2013-04-21T08:51:39.460 に答える
1

すべての変数を同じ名前のままにします

 $value = $_POST['ROUTE'];
 $value = $_POST['ADDRESS'];
 $value = $_POST['LATITUDE'];
 $value = $_POST['LONGITUTE'];
 $value = $_POST['HAZARD'];
 $value = $_POST['RISK'];

それらを一意のIDに変更します(SQLステートメントで参照したように)

 $value1 = $_POST['ROUTE'];
 $value2 = $_POST['ADDRESS'];
 $value3 = $_POST['LATITUDE'];
 $value4 = $_POST['LONGITUTE'];
 $value5 = $_POST['HAZARD'];
 $value6 = $_POST['RISK'];

実際に実行するようにクエリステートメントを変更します

 $result = mysql_query("INSERT INTO rmbhazards (ROUTE, ADDRESS, LATITUDE, LONGITUDE, HAZARD, RISK) VALUES ('$value', '$value2', 
 '$value3', '$value4', '$value5', '$value6')");
于 2013-04-21T08:50:48.233 に答える