【问题标题】:SQL query using checkboxes使用复选框的 SQL 查询
【发布时间】:2017-08-21 04:34:44
【问题描述】:

我在这里看到了一些关于这个主题的问题,但没有一个能解决我的问题。我正在尝试使用 SQL 和复选框制作一个简单的过滤器。

到目前为止,我得到了这个代码:

<form action="#" method="GET" id="filter"> 
    <input type="checkbox" name="omgeving[]" value="Indoor">Indoor<br /> 
    <input type="checkbox" name="omgeving[]" value="Outdoor">Outdoor<br /> 
    <input type="submit" name="kies" value="Kies" /> 
</form> 
<?php 
if(isset($_GET['omgeving']) && count($_GET['omgeving'] > 0)) { 
    $catid = implode(',', $_GET['omgeving']);
    $catid = mysql_real_escape_string($catid); 

    $query = mysql_query("SELECT * FROM SomeWhere WHERE Omgeving IN (".$catid.")"); 

    while($row = mysql_fetch_assoc($query)) { 
        $id = $row['Id']; 
        $prod = $row['Product']; 

        echo $prod . "<br />"; 
    }
}
?>

当我点击 submit 时,它会做一些事情,它会将 URL 更改为:filtertest/?omgeving[]=Indoor&amp;kies=Kies,但我认为查询无法正常工作,因为我的页脚通常会消失,这意味着我的代码不正确,页面停止进一步加载。为了我的爱,我无法弄清楚为什么这不起作用......

有人可以帮助我吗?

我已经查看了这个answer,但这并不能解决我的问题。上面的代码是至少做某事的代码。

帮助...我在这里做错了什么?

【问题讨论】:

  • 如果我只想在同一页面上更新查询,是我还是不需要操作脚本...
  • @Andreas nice one :'D,Jay-oh,你应该在安全方面工作一下php.net/manual/en/security.database.sql-injection.php
  • 是的,我知道这里的安全是一个问题。我只是想让代码正常工作,然后担心安全性。这个网站还没有上线,所以我现在是唯一一个使用它的人:)

标签: php jquery sql


【解决方案1】:

omgeving[] 更改为omgeving。所以,URL 是?omgeving=Indoor&amp;kies=Kies

<?php 

if(isset($_GET['omgeving']) || !empty($_GET['omgeving'])){
  $catid = mysql_real_escape_string($_GET['omgeving']); 
  //continue with what you are doing.
  // use var_dump(<variable>); exit(); to debug.
}

?>

希望对您有所帮助!

【讨论】:

    【解决方案2】:

    换行

     $catid = implode(',', $_GET['omgeving']);
    

    $catid = implode('","', $_GET['omgeving']);
    $catid = '"'.$catid.'"';
    

    如果您选择了多个,最后您的查询应该如下所示

    SELECT * FROM SomeWhere WHERE Omgeving IN ("Indoor","Outdoor")

    【讨论】:

    • 没用是什么意思,有没有报错
    • 不,没有错误。只是页脚消失了,就像我开始时一样……糟糕。
    • 你能检查一下PHP错误日志并给我们看一下错误日志吗
    • 好吧,我不知道如何向您显示错误日志。据我所见,我没有收到错误。我在脚本末尾添加了error_log("You messed up!", 3, "/var/tmp/my-errors.log");,但这可能是错误的......
    • Ubuntu - /var/log/apache2/error.log Centos -/var/www/logs/httpd/error_log
    【解决方案3】:

    $catid = implode("','", $_GET['omgeving']);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      相关资源
      最近更新 更多