研究mysql查询的输入文本,php编码
我在编写php页面时遇到了一个问题,在这里我可以看到一个表(一个mysql表),但是当我插入用户名、id\u用户、电子邮件或地址(例如)时,我必须过滤这个表。我将复制为单个字段编写的代码:研究mysql查询的输入文本,php编码,php,mysql,mysqli,phpmyadmin,Php,Mysql,Mysqli,Phpmyadmin,我在编写php页面时遇到了一个问题,在这里我可以看到一个表(一个mysql表),但是当我插入用户名、id\u用户、电子邮件或地址(例如)时,我必须过滤这个表。我将复制为单个字段编写的代码: if (!isset($_GET['name'])) $query = "not interesting"; else if($_GET['name'] != ''){ $var145 = $_GET['name']; $query = "not interesting wher
if (!isset($_GET['name']))
$query = "not interesting";
else if($_GET['name'] != ''){
$var145 = $_GET['name'];
$query = "not interesting where `Name` = '$var145'";
}
else
$query = "not interesting";
这很好,因为当表单未发送时,它将显示所有表,当文本不为null时,它将显示带有过滤器的查询,当文本为null时,它将显示所有表。你知道怎么帮我吗?我不知道如何改进另外三个输入文本来研究更好的记录,因为我必须检查变量的存在性,然后决定做什么。对不起,我的英语不好,我希望你能理解我的问题。谢谢大家尤里卡!这不是我所能想象的最好的代码,但我发布它,希望它对某些人有用
$doc1_queryI = "SELECT * from t_history";
$var1 = 0; //a
$var2 = 1; //b
$var3 = 1; //c
$var4 = 0; //d
$varAnd =0;
if($var1==1 or $var2==1 or $var3==1 or $var4==1)
$doc1_queryF = $doc1_queryI." where"; //se almeno una session esiste
if($var1==1){
$doc1_queryF = $doc1_queryF." x=a ";
$varAnd =1;
}
if($var2==1)
{
if($varAnd==1)
$doc1_queryF = $doc1_queryF." and ";
$doc1_queryF = $doc1_queryF." y=b ";
else
$varAnd =1;
}
if($var3==1)
{
if($varAnd==1)
$doc1_queryF = $doc1_queryF." and ";
$doc1_queryF = $doc1_queryF." z=c ";
else
$varAnd =1;
}
if($var4==1)
{
if($varAnd==1)
$doc1_queryF = $doc1_queryF." and ";
$doc1_queryF = $doc1_queryF." p=d ";
}
echo $doc1_queryF;`
听起来您需要实现复杂的过滤。通常,这是通过在处理每个表单字段时构建一个“WHERE”子句来完成的,而不是基于每个字段进行整个查询。另外,请阅读有关SQL注入的文档:对不起,现在我看不懂了。这种复杂过滤的最后一次机会是只提交一次表单。你知道这件事有用吗?我知道有一个函数,但如果我们不能阻止它,它将导致一个循环,因为页面将被重新加载,脚本将再次执行,并且再次执行-1。。。为什么?