1

リクエストを介してPHPコードにリクエストを送信しGETます。いくつかのパラメータが渡されます。selectステートメントのWHERE句でこれらのパラメーターを使用します。

リクエストを取得

http:// localhost / server / person.php?Id = 1&age = 12&hieght = 100

PHPコード

<?php
$connection = mysql_connect("localhost","user","pwd");
if (!$connection )
  {
  die('FAIL: ' . mysql_error());
  }
mysql_select_db("db", $connection );
$result = mysql_query("SELECT * FROM Person where hieght='$_GET[hieght]");
$num_rows = mysql_num_rows($result);
?>

私のPHPコードは間違っていると思います。GETこれがリクエストから変数を取得する方法であるかどうかはわかりません。

4

5 に答える 5

2

使用から変数を取得するには、配列$_GETから高さを取得する例として、次のように$_GET記述できます。

$height=$_GET['height'];

だからあなたは書くことができます

$result = mysql_query("SELECT * FROM Person where hieght='".$hieght."'");

またはあなたは書くことができます

$result = mysql_query("SELECT * FROM Person where hieght='".$_GET['height']."'");

アップデート:

mysql_real_escape_string次のようなSQLインジェクションを防ぐために使用します

$height=$_GET['height'];
$result = mysql_query("SELECT * FROM Person where hieght='".mysql_real_escape_string($hieght)."'");

また

$result = mysql_query("SELECT * FROM Person where hieght='".mysql_real_escape_string($_GET['height'])."'");
于 2012-07-06T05:27:46.390 に答える
1

これを使って

$height = $_GET['hieght']; 
$result = mysql_query("SELECT * FROM Person where hieght='$height'");

それ以外の

$result = mysql_query("SELECT * FROM Person where hieght='$_GET[hieght]");

このコードでは、SQLインジェクションの犠牲になる可能性が非常に高いことに注意してください

于 2012-07-06T05:29:31.387 に答える
1

この連結を使用することもできます:

mysql_query("SELECT * FROM Person where hieght='".$_GET['hieght']."'");
于 2012-07-06T05:31:54.877 に答える
1
$result = mysql_query("SELECT * FROM Person where hieght='".$_GET['hieght']."'");

自分の気持ちを感じているときの優れたデバッグ手法は、SQLを文字列に入れて、ログに記録し、それが期待どおりかどうかを確認することです。クエリの後にmysql_error()を使用すると、ヒントも得られる可能性があります...

$sql = "SELECT * FROM Person where hieght='".$_GET['hieght']."'";
$result = mysql_query($sql);
#Not for production code, but handy while learning - error goes into web server log.
error_log("SQL=$sql, error=".mysql_error());
于 2012-07-06T05:33:18.960 に答える
1

インジェクションの場合は、次のように入力を解析する必要があります。

<?php

    $myHeight = mysql_reaL_escape_string($_GET['height']);

    $connection = mysql_connect("localhost","user","pwd");
    if (!$connection )
    {
        die('FAIL: ' . mysql_error());
    }
    mysql_select_db("db", $connection );
    $result = mysql_query("SELECT * FROM Person where height=$myHeight");
    $num_rows = mysql_num_rows($result);
?>

次に、古いmysql_queryなどではなくPHPPDOオブジェクト使用する必要があります。

于 2012-07-06T05:33:37.387 に答える