-1

所以我有我的 PHP 页面,在地址栏中它显示如下内容:

http://blabla/ClientStats.php?client=blabla

我已经成功使用了 $_GET['CLIENT'] 变量,直到我想在 SQL 查询中访问它,如下所示:

<?php
$query = "SELECT ... ... ... FROM ... ... ... WHERE Client = '" + $_GET['CLIENT'] + "'";
?>

查询比这复杂得多,但是那个“WHERE”语句会起作用吗?

我曾尝试以多种不同的方式让它工作,但没有成功,所以如果我今天能找到让它明天工作的方法,那就太好了(甚至不记得我是否像上面写的那样尝试过! )。

那么这会起作用吗,如果不是,我应该怎么做?

4

4 回答 4

2

这不是一个好主意,因为您在 sql 查询中使用未经检查的用户输入,这将导致安全漏洞。

于 2012-10-28T11:54:32.717 回答
2

添加 '。' 而不是“+”。它应该是

$query = "SELECT ... ... ... FROM ... ... ... WHERE Client = '" . $_GET['CLIENT'] . "'";

但在此之前,请检查您的代码,因为它容易受到 SQL 注入的影响

于 2012-10-28T11:58:38.267 回答
1

回答您最初的问题,是的,它会起作用,但我认为您会发现它相当不受欢迎,因为它会在您的应用程序中打开巨大的安全漏洞。

我所做的是将值存储在变量中,然后对输入进行清理:

例子:

$client = mysql_real_escape_string($_GET['CLIENT']);
于 2012-10-28T11:57:19.263 回答
0

您必须使用 *_real_escape_string 转义,否则您的查询能够进行 sql 注入攻击,因此像这样使用

$client = mysql_real_escape_string($_GET['CLIENT']);//if using mysql

<?php
$query = "SELECT ... ... ... FROM ... ... ... WHERE Client = '".$client. "'";
?>
于 2012-10-28T11:59:03.040 回答