将自定义字段传递给 SQL 查询

Posted

技术标签:

【中文标题】将自定义字段传递给 SQL 查询【英文标题】:Passing custom field to SQL query 【发布时间】:2014-02-25 03:42:10 【问题描述】:

我想在 2 个问题上获得用户输入,然后将这些输入用作我的 wordpress 网站的 SQL 查询的一部分。

这是我的代码:

<form action="" method="post">
    <select name="column_selected">
        <option value="Health Insurance">Health Insurance</option>
        <option value="Education">Education</option>
    </select>
    <select name="state" size="1">
      <option selected value="">State...</option>
      <option value="Alabama">Alabama</option>
      <option value="Alaska">Alaska</option>
      <option value="Arizona">Arizona</option>
      <option value="Arkansas">Arkansas</option>
      <option value="California">California</option>
      <option value="Colorado">Colorado</option>
      <option value="Connecticut">Connecticut</option>
      <option value="Delaware">Delaware</option>
      <option value="Florida">Florida</option>
      <option value="Georgia">Georgia</option>
      <option value="Hawaii">Hawaii</option>
      <option value="Idaho">Idaho</option>
      <option value="Illinois">Illinois</option>
      <option value="Indiana">Indiana</option>
      <option value="Iowa">Iowa</option>
      <option value="Kansas">Kansas</option>
      <option value="Kentucky">Kentucky</option>
      <option value="Louisiana">Louisiana</option>
      <option value="Maine">Maine</option>
      <option value="Maryland">Maryland</option>
      <option value="Massachusetts">Massachusetts</option>
      <option value="Michigan">Michigan</option>
      <option value="Minnesota">Minnesota</option>
      <option value="Mississippi">Mississippi</option>
      <option value="Missouri">Missouri</option>
      <option value="Montana">Montana</option>
      <option value="Nebraska">Nebraska</option>
      <option value="Nevada">Nevada</option>
      <option value="New Hampshire">New Hampshire</option>
      <option value="New Jersey">New Jersey</option>
      <option value="New Mexico">New Mexico</option>
      <option value="New York">New York</option>
      <option value="North Carolina">North Carolina</option>
      <option value="North Dakota">North Dakota</option>
      <option value="Ohio">Ohio</option>
      <option value="Oklahoma">Oklahoma</option>
      <option value="Oregon">Oregon</option>
      <option value="Pennsylvania">Pennsylvania</option>
      <option value="Rhode Island">Rhode Island</option>
      <option value="South Carolina">South Carolina</option>
      <option value="South Dakota">South Dakota</option>
      <option value="Tennessee">Tennessee</option>
      <option value="Texas">Texas</option>
      <option value="Utah">Utah</option>
      <option value="Vermont">Vermont</option>
      <option value="Virginia">Virginia</option>
      <option value="Washington">Washington</option>
      <option value="West Virginia">West Virginia</option>
      <option value="Wisconsin">Wisconsin</option>
      <option value="Wyoming">Wyoming</option>
    </select>
<input type="submit" value="Submit">

然后我想使用这些在我的数据库上运行 SQL 查询并返回结果

$lotsofasians = ("SELECT '.$column.' FROM bigstatetbl WHERE 'STATE' = '".$state."'"));

但我很确定我的 SQL 查询不正确,并且我觉得我需要以某种方式保存输入?

仅供参考,我的自定义表 (bigstatetbl) 有一个名为“STATE”的列以及与“健康保险”和“教育”匹配的其他列

任何帮助将不胜感激!

这是我在获得用户输入后卡住的地方:

<?php
$column_selected = $_POST["column_selected"];
$state = $_POST["state"];

echo "You have chosen to look at <br> $state <br>";
echo "And Looking at <br> $column_selected";
?>
<?php

$lotsofasians =$wpdb->get_results ("SELECT .$column. FROM 'bigstatetbl' WHERE 'STATE' = '".$state."'"));
echo "$lotsofasians";

?>

【问题讨论】:

如果要保存输入,需要使用mysqlINSERT()函数。 $sql = "INSERT INTO bigstatetbl (STATE) VALUES ('$state')"; “但我很确定我的 SQL 查询不正确,我觉得我需要以某种方式保存输入?” 我不想保存输入。我只想使用用户输入来运行查询,以便用户可以获得他们想要的结果列表。例如:如果用户选择 California 和 Health Insurance,SQL 查询将返回包含这两列的结果。这有意义吗? 好的,那么您需要遍历结果。 whileforeach 循环。示例:while($row = $sql-&gt;fetch_assoc()) $states = $row['state'] . "&lt;br&gt;"; echo $states; 你不是在这里做的吗=> ***.com/q/21761370 ? 你的代码太容易被SQL注入了,imgs.xkcd.com/comics/exploits_of_a_mom.png 【参考方案1】:

应该是,

$lotsofasians =$wpdb->get_results ("SELECT ".$column." FROM 'bigstatetbl' WHERE 'STATE' = '".$state."'"));

【讨论】:

以上是关于将自定义字段传递给 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

Paypal 结帐按钮未将自定义字段传递给 PIN 消息

无法将自定义结果从解析器传递到 Graphql

如何将自定义字段传递到 mapbox-gl js 以在地图上创建点?

查询数据时,Prisma 将自定义字段附加到 info 参数

如何将自定义字段添加到 WooCommerce 注册表单

将自定义输入视图设置为全局所有文本字段的最简单方法