Php 获取请求-无法从数据库执行SELECT语句
我将通过Php 获取请求-无法从数据库执行SELECT语句,php,mysql,Php,Mysql,我将通过GET请求向PHP代码发送请求。它将传递多个参数。我将在select语句的WHERE子句中使用这些参数 获取请求 http://localhost/server/person.php?Id=1&age=12&hight=100 PHP代码 <?php $connection = mysql_connect("localhost","user","pwd"); if (!$connection ) { die('FAIL: ' . mysql_error()); } my
GET
请求向PHP代码发送请求。它将传递多个参数。我将在select语句的WHERE子句中使用这些参数
获取请求
http://localhost/server/person.php?Id=1&age=12&hight=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);
?>
要从$\u get
获取变量,请使用,例如从您可以编写的$\u get
数组获取高度
$height=$_GET['height'];
$result = mysql_query("SELECT * FROM Person where hieght='".$hieght."'");
$result = mysql_query("SELECT * FROM Person where hieght='".$_GET['height']."'");
这样你就可以写作了
$height=$_GET['height'];
$result = mysql_query("SELECT * FROM Person where hieght='".$hieght."'");
$result = mysql_query("SELECT * FROM Person where hieght='".$_GET['height']."'");
或者你可以写
$height=$_GET['height'];
$result = mysql_query("SELECT * FROM Person where hieght='".$hieght."'");
$result = mysql_query("SELECT * FROM Person where hieght='".$_GET['height']."'");
更新:
使用mysql\u real\u escape\u string
防止sql注入,如
$height=$_GET['height'];
$result = mysql_query("SELECT * FROM Person where hieght='".mysql_real_escape_string($hieght)."'");
或
要从$\u get
中获取变量,请使用从$\u get
数组获取高度的示例,您可以编写
$height=$_GET['height'];
$result = mysql_query("SELECT * FROM Person where hieght='".$hieght."'");
$result = mysql_query("SELECT * FROM Person where hieght='".$_GET['height']."'");
这样你就可以写作了
$height=$_GET['height'];
$result = mysql_query("SELECT * FROM Person where hieght='".$hieght."'");
$result = mysql_query("SELECT * FROM Person where hieght='".$_GET['height']."'");
或者你可以写
$height=$_GET['height'];
$result = mysql_query("SELECT * FROM Person where hieght='".$hieght."'");
$result = mysql_query("SELECT * FROM Person where hieght='".$_GET['height']."'");
更新:
使用mysql\u real\u escape\u string
防止sql注入,如
$height=$_GET['height'];
$result = mysql_query("SELECT * FROM Person where hieght='".mysql_real_escape_string($hieght)."'");
或
用这个
$height = $_GET['hieght'];
$result = mysql_query("SELECT * FROM Person where hieght='$height'");
而不是
$result = mysql_query("SELECT * FROM Person where hieght='$_GET[hieght]");
注意,这段代码很可能是sql的受害者
注射
用这个
$height = $_GET['hieght'];
$result = mysql_query("SELECT * FROM Person where hieght='$height'");
而不是
$result = mysql_query("SELECT * FROM Person where hieght='$_GET[hieght]");
注意,这段代码很可能是sql的受害者
注射
您也可以使用此concat:
mysql_query("SELECT * FROM Person where hieght='".$_GET['hieght']."'");
您也可以使用此concat:
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());
当您感觉到自己的错误时,一种很好的调试技术是将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());
您应该像分析注入的输入那样进行分析:
<?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_查询等。您应该像解析注入一样解析输入:
<?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\u查询等。'$\u GET[Hight]
似乎您缺少结束语'
,应该是'$\u GET[Hight]
,顺便说一句,这是非常容易发生SQL注入的,需要一些时间来清理它,或者使用PDO
。你比我快。还有,用“height”而不是“hight”,这可能是另一种打字错误。“$\u GET[hight]
似乎你错过了结束语”
,应该是“$\u GET[hight]”
,顺便说一句,这很容易发生SQL注入,请花点时间清理一下,或者改用PDO
。你比我先搞定了。还有,用“高度”而不是“高度”,这可能是另一个打字错误。我该如何纠正它,你能帮忙吗me@Illep,您收到了很多答案和评论,请阅读并执行。不是答案,我是问您的SQL注入评论made@Illep,很多地方都有人问过,也有人讨论过,请自己研究一下。应该有助于你理解它。我如何修复它,你能帮忙吗me@Illep,您收到了很多答案和评论,请阅读并执行。不是答案,我是问您的SQL注入评论made@Illep,很多地方都有人问过,也有人讨论过,请自己研究一下。应该是$\u GET['hight']
不是$\u GET[hight]
应该是$\u GET['hight']
不是$\u GET[hight]