【问题标题】:Research input-text for mysql query, php coding研究 mysql 查询的输入文本,php 编码
【发布时间】:2017-06-21 01:17:36
【问题描述】:

我在编写 php 页面时遇到问题,我可以在其中看到一个表(一个 mysql 表),但是当我插入用户名、id_user、电子邮件或地址(例如)时,我必须过滤这个表。我将复制我为单个字段编写的代码:

if (!isset($_GET['name']))
     $query = "not interesting";
else if($_GET['name'] != ''){
     $var145 = $_GET['name'];
     $query = "not interesting where `Name` = '$var145'";
}
else 
     $query = "not interesting";

这很好用,因为当没有发送表单时,它会显示所有表格,当文本不为空时,它将显示带有过滤器的查询,当文本为空时,它将显示所有表。你知道如何帮助我吗?我不知道如何改进另外三个输入文本来研究更好的记录,因为我必须检查变量的存在然后决定做什么。对不起我的英语不好,我希望你能理解我的问题。谢谢大家

【问题讨论】:

  • 听起来你需要实现复杂的过滤。通常这是通过在处理每个表单字段时构建“WHERE”子句来完成的,而不是根据每个字段进行整个查询。另外,请阅读有关 SQL 注入的文档:php.net/manual/en/security.database.sql-injection.php
  • 抱歉,现在我看不懂了。我对这种复杂过滤的最后一次机会是只提交一次表单。你知道一些有用的东西吗?我知道有一个函数,但是如果我们不能阻止它会导致循环,因为页面会重新加载,脚本会一次又一次地执行
  • 那-1...为什么?

标签: php mysql mysqli phpmyadmin


【解决方案1】:

尤里卡!这不是我能想象的最好的代码,但我发布它希望它对某人有用

$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;`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 2010-09-11
    • 2010-10-09
    • 2014-04-27
    • 2011-06-12
    • 2013-05-05
    • 1970-01-01
    相关资源
    最近更新 更多