1

私はphpの初心者です。phpを使用してオートコンプリートテキストボックスをコーディングしました。送信ボタンがあります。フォームアクションを指定していません。

これは、オートコンプリート テキスト ボックスに使用した HTML フォーム コードです。このオートコンプリート テキスト ボックスは値を選択します

<form  method="post" autocomplete="off">
    <p>
        <b>Theater Name</b> <label>:</label>
        <input type="text" name="theater" id="theater" />
    </p>
    <input type="submit" value="Submit" />
</form>

where句に基づいて値を取得する別のphp関数があります.whereステートメントでは、フォームから選択した値を使用したいと考えています。

例:劇場名が「フォームの値」である劇場から住所を選択

PHP関数でフォーム値を使用する方法は?誰でも私を助けることができますか?

 <?php
$con = mysql_connect("localhost","root");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("theaterdb", $con);

$result = mysql_query("SELECT * FROM theter
WHERE theater_name="<!-- This could be value that we get after clicking submit button-->);

while($row = mysql_fetch_array($result))
  {
  echo $row['thearer_name'];
  echo "<br />";
  }
?> 

前もって感謝します......

4

4 に答える 4

2

$_POSTから値を取得できます$_POST['theater']

また、SQL でこの値を直接使用しないでください。SQL インジェクションを防ぐためにエスケープする必要があります。

$theater = mysql_escape_string($_POST['theater']);
$result = mysql_query("SELECT * FROM theter WHERE theater_name='$theater'";

最後に、古い関数よりも提案されているPDOを見ることができます。mysql_*

于 2012-09-17T08:13:27.377 に答える
1

まず、送信ボタンのコードを次のように変更します。

<input name="submit" type="submit" value="Submit" />

さて、これはあなたがクエリに使うべきコードです:

<?php
if (isset($_POST['submit'])) {
    $con = mysql_connect("localhost","root");
    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("theaterdb", $con);

    $result = mysql_query("SELECT * FROM theater
    WHERE theater_name='" . mysql_real_escape_string($_POST['theater']) . "'");

    while($row = mysql_fetch_array($result))
    {
        echo $row['theater_name'];
        echo "<br />";
    }        
}

まず、ユーザーがフォームを送信したことを確認します。次に、彼が送信したデータをエスケープして、クエリに挿入します。

*注:私が書いたものはすべて、フォームが送信された後にコードが実行されるという仮定に基づいています。

*別の注意:MYSQL関数ではなくPDOの使用について読む必要があります。

于 2012-09-17T08:19:42.990 に答える
1

何よりもまず、mysql (mysqli_query、mysqli_connect) の代わりに mysqli を使用してみてください。それを使用することには多くのセキュリティ/速度の利点があり、まったく同じ機能を備えています。

上記の回答では $_POST['theater'] (入力の名前) の使用について言及していますが、投稿をクエリに入れる前に必ずエスケープしてください。

$con = mysqli_connect("localhost","root", "YOUR PASSWORD HERE", "YOUR DATABASE HERE");
if (!$con)
  {
  die('Could not connect: ' . mysqli_error());
  }

 // No need for this, please see the updated mysqli_connect as the 4th parameter selects your DB
 //mysqli_select_db("theaterdb", $con);

// Please notice the last parameter of the mysqli_real_escape_string is your Input's POST
$query = "SELECT * FROM theater WHERE theater_name=".mysqli_real_escape_string($con, $_POST['theater']);

$result = mysqli_query($con, $query);

while($row = mysqli_fetch_array($result))
  {
  echo $row['thearer_name'];
  echo "<br />";
  }
于 2012-09-17T08:16:03.977 に答える
0
$_POST["your_variable_name"] // for POST
$_GET["your_variable_name"] // for GET

詳細については、http ://www.php.net/manual/en/language.variables.external.php を参照してください。

于 2012-09-17T08:13:30.793 に答える