我将通过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
请求中获取变量的方法。
答案 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等。