列出sql和变量

时间:2014-03-31 12:45:33

标签: php

PHP + HTML:

我有三个列表框,其中的内容(单击时)被放入sql SELECT字符串中的变量中。

这样的事情:

SELECT * FROM table where field1= '" & variable1 & "' AND field2 = '" & Variable2 &"' AND field3 = '" & Variable3 & "'"

如果单击所有列表框,这很有效但是如果我只点击列表框中的2或1没有任何反应,我会得到一张空白表。

我用复选框试了一下,得到了同样的东西。 问题是我将把列表的数量扩展到12但这会产生同样的问题。

所有这一切都很新,所以任何建议都非常感激。 亲切的问候 吉姆

6 个答案:

答案 0 :(得分:1)

如果未选中复选框,则不会将其提交给服务器!你的PHP代码可能依赖于它而不应该。

答案 1 :(得分:1)

您可以将此查询与变量名一起使用。

$query = "SELECT * FROM TABLENAME WHERE field1 LIKE '".$variable1."' AND field2 LIKE '".$variable2."' AND field3 LIKE '".$variable3."'";

答案 2 :(得分:1)

在将变量添加到sql之前,只需检查变量是否存在 你的代码应该是那样的

if(isset($variable1)){
  $sql .= " AND field1 = '$variable1'";
}

答案 3 :(得分:0)

仅发布已选中的复选框。所以它需要略有不同的appraoch。您可以像这样实现它 - 将隐藏的输入与可能未选中的复选框同名。我认为它的工作原理是,如果未选中复选框,隐藏的输入仍然成功并发送到服务器,但如果选中该复选框,它将覆盖之前的隐藏输入。这样您就不必跟踪发布数据中的哪些值来自复选框。

<form>
  <input type='hidden' id='testName' value='0' name='carga1'>
  <input type='checkbox' id='testNameHidden' value='1' name='carga1'>

</form>

在提交表单之前,请根据检查的条件禁用隐藏字段。

<script>
if(document.getElementById("testName").checked){
  document.getElementById('testNameHidden').disabled = true;
}
</script>

我个人认为这是最简单的方法。

答案 4 :(得分:0)

我建议构建一个SQL条件数组,而只添加一个条件,如果选择了相应列表框中的某些内容。这将导致类似这样的事情:

$conds = array(1);
for ($i = 1; $i <= 3; $i++)
    if (isset($_POST['Variable' . $i]))
        $conds[] = "field" . $i . " = '" . $_POST['Variable' . $i] . "'";
$query = "SELECT * FROM table WHERE " . implode(" AND ", $conds);

当然,我不知道变量的确切标识符,因此,将其作为方向。

修改:根据评论中Doge的建议略微更改了代码。

答案 5 :(得分:0)

列表框应该将第一个条目设为空,以便使用不必选择任何内容。您的PHP代码应该使用

$fld1 = isset($_POST['field1']) ? $_POST['field1'] : "";

然后构建你的sql语句。

$sql = "SELECT * FROM table ";
$where ="";
if( $fld1 != "" ) $whr .= 'field1 = '.$fld1;
if( $fld2 != "" {
  if( $whr != "" ) $whr += " AND ";
  $whr .= 'field2='.$fld2;
}