将自定义字段传递给 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";
?>
【问题讨论】:
如果要保存输入,需要使用mysql的INSERT()
函数。 $sql = "INSERT INTO bigstatetbl (STATE) VALUES ('$state')";
“但我很确定我的 SQL 查询不正确,我觉得我需要以某种方式保存输入?”
我不想保存输入。我只想使用用户输入来运行查询,以便用户可以获得他们想要的结果列表。例如:如果用户选择 California 和 Health Insurance,SQL 查询将返回包含这两列的结果。这有意义吗?
好的,那么您需要遍历结果。 while
或 foreach
循环。示例:while($row = $sql->fetch_assoc()) $states = $row['state'] . "<br>"; 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 查询的主要内容,如果未能解决你的问题,请参考以下文章
如何将自定义字段传递到 mapbox-gl js 以在地图上创建点?