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);
?>

其次,您还应该使用PHP PDO对象而不是旧的 mysql_query 等。

于 2012-07-06T05:33:37.387 回答