GET请求 - 无法从DB执行SELECT语句

时间:2012-07-06 05:24:39

标签: php mysql

我将通过GET请求向PHP代码发送请求。它会传递几个参数。我将在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请求中获取变量的方法。

5 个答案:

答案 0 :(得分: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'])."'");

答案 1 :(得分:1)

使用此

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

而不是

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

请注意,使用此代码很可能成为sql的受害者   注射

答案 2 :(得分:1)

你也可能想要使用这个结论:

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

答案 3 :(得分: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());

答案 4 :(得分: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等。