有没有办法动态运行mysqli查询?我正在开发一个具有动态表单生成选项的小项目。然后他们想要提交这些表格。显然,我们不知道表单字段有多少,他们想要多少过滤器。那么我有什么方法可以执行此操作吗?假设我能做点什么
SELECT * FROM table WHERE fld1 = 1 OR fld2 = 2 OR fld3 = 3....
那些1,2,3,......可以是某种东西,也可能是空的,取决于过滤器。
答案 0 :(得分:2)
您可以通过检查$_POST
值然后构建where语句,在php中动态构建查询。这是一些伪代码
foreach($_POST as $name=>$value)
{
$where[] = "`$key` = '$value'";
}
$sql = "SELECT * FROM table WHERE ".implode("OR", $where);
当然,您需要消毒或使用预先准备好的声明以确保这是安全的。
答案 1 :(得分:1)
也许可以这样做:
$Where = array();
foreach($_POST['form-field'] as $Field=>$Value){
if($Value){
$Where[] = $Field."=".$Value;
}
}
$Query = "SELECT * FROM table WHERE ".implode(" OR ",$Where);
答案 2 :(得分:0)
动态运行它的最好方法是使用PDO和类,如果你对这两件事中的任何一个感到困惑,请查看这里找到的PHPGuru Jeffery Way:https://laracasts.com/series/php-for-beginners并查看他的PHP教程,你会快速学习您需要做什么才能创建一个允许您动态连接到数据库的类!
答案 3 :(得分:0)
$filter = '';
$filter .= 'fld1 = 1 OR ';
$filter .= 'fld2 = 2 OR ';
$filter .= 'fld3 = 3 OR ';
...
...
if(!empty($filter)) {
$filter = substr($filter,0,-2); // delete last OR
}
$query = "SELECT * FROM table WHERE ".$filter."";
...
这样的东西可行,你必须修改填充$filter
希望这会有所帮助。
答案 4 :(得分:0)
您可以使用MySQL查询中的 IN 子句。
类似这样。
SELECT * FROM table
WHERE fld1 IN (1, 2, 3);
希望这会对你有所帮助。