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

标签 javascript sql button query-builder

我正在制作某种类型的查询构建器,我想实现一个按钮来将 AND 语句添加到我的查询中。我制作了一个版本,其中实现了 1 个 AND 语句,但它有点曲折,我希望用户能够执行多个 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);
?>

下面是它应该是什么样子的图像: click here

最佳答案

一些事情:

  • 如果第一对为空,您当前的 sql 将失败,因为没有 WHERE 而只有 AND 子句。
  • 在 html 中使用数组允许您在 php 中使用数组,通过遍历它使一切更容易处理。

一个简单的例子:

html:

<select name="field[]">...</select>
<select name="operator[]">...</select>
<select name="value[]">...</select>

您可以使用 javascript 添加更多对完全相同的代码。

现在在 php 中,您的 $_POST 变量将是数组,因此您可以执行以下操作:

$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...

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

关于javascript - 如何创建向查询添加 AND 语句的 AND 按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37807123/

相关文章:

Javascript - 纯js中的图表,移动点

SQL Server 2016 比 2008 慢

math - 可耻的简单 : need help spacing shapes

javascript - 将所有值保存在 ng-repeat 中的输入文本框中

javascript - Soundcloud 播放器小部件在轨道更改时触发事件

javascript - 除了深层子 div 之外,如何使整个 div 可点击?

ios - 我无法将按钮与操作相关联

sql - 在 Select 语句中使用存储过程的结果

sql - 在不使用外部查询的情况下从每个组中获取第一个值的优雅方法

java - 为按钮数量分配不同的上下文菜单