Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何创建向查询添加AND语句的AND按钮?_Javascript_Sql_Button_Query Builder - Fatal编程技术网

Javascript 如何创建向查询添加AND语句的AND按钮?

Javascript 如何创建向查询添加AND语句的AND按钮?,javascript,sql,button,query-builder,Javascript,Sql,Button,Query Builder,我正在制作某种类型的查询生成器,我想实现一个按钮,将and语句添加到查询中。我制作了一个版本,其中我实现了1和语句,但它有点迂回,我希望用户能够执行多个AND语句。这就是我目前掌握的密码 已更新这是我的.php文件: <?php include "connect.php"; //Ophalen van de waarden uit de tabel(len) en veld(en) $table = $_GET['tableSelected']; $field

我正在制作某种类型的查询生成器,我想实现一个按钮,将and语句添加到查询中。我制作了一个版本,其中我实现了1和语句,但它有点迂回,我希望用户能够执行多个AND语句。这就是我目前掌握的密码

已更新这是我的.php文件:

   <?php

include "connect.php";

//Ophalen van de waarden uit de tabel(len) en veld(en) 
$table          = $_GET['tableSelected'];
$field          = $_GET['fieldSelected'];
$attribute      = $_GET['attributeSelected'];
$operator       = $_GET['operatorSelected'];
$fieldList      = $_GET['fieldList'];

$fieldstr = $fieldList . ",ST_AsGeoJSON(ST_Transform(l.geom,4326))";

$sql = "SELECT $fieldstr
        FROM $table l";

if (!empty($field) && !empty($operator) && !empty($attribute)) {
    $sql .= " WHERE {$field} {$operator} '{$attribute}' AND {$field}";
};

//echo ($sql);
?>
有几件事:

  • 如果第一对为空,则当前sql将失败,因为将没有
    WHERE
    ,而只有
    子句
  • 在html中使用数组允许您在php中使用数组,通过在数组上循环,使所有内容都更易于处理
一个简单的例子:

html:


顺便说一下,您应该用占位符替换该值,并对数据库、表和列名以及运算符使用白名单,以避免sql注入/中断查询。

谢谢,这看起来正是我需要的。但是关于如何使用/结合javascript添加更多相同代码对的想法呢@jeroen@L.fcg这个php部分允许“无限”数量的对。要在javascript中生成html,您可能需要在此处提出一个新问题,这有点过于宽泛。@L.fcg顺便说一句,您应该将问题回滚到最初的状态,因为现在的问题和答案没有任何意义。好吧,我将在另一个问题中提出,谢谢!在我当前的php文件中,我有$fieldList、$operatorList和$attributeList。我能不能只在你使用$\u POST['field']、$\u POST['foperator']和$\u POST['attribute']的地方使用它们?
<select name="field[]">...</select>
<select name="operator[]">...</select>
<select name="value[]">...</select>
$sql = 'SELECT ...';

# this array will contain all "AND" conditions
$pairs = [];

# loop over all your select groups
foreach ($_POST['field'] as $key => $field) {
    if (!empty($field) && !empty($_POST['operator'][$key]) && !empty($_POST['value'][$key])) {
        $pairs[] = $field . " " . $_POST['operator'][$key] . " '" . $_POST['value'][$key] . "'";
    }
}

# add the conditions
if (count($pairs) > 0) {
    $sql .= ' WHERE ' . implode(' AND ', $pairs);
}

# add sort order, execute sql, etc...