我有一个应用程序显示数据库表中的文件列表。我希望用户能够通过选择将过滤文件列表的选项并仅显示匹配的选项来创建组。组选项被添加到另一个表中供以后使用。在PHP中生成一个动态的MYSQLi准备语句
下面是选项: name
year
type
room
day
time
他们全部来自name
除了是可选的,可以由用户留空。某些选项可以包含由,
分隔的多个值。
这里是我的代码中加入这样的信息:
if ($addGrp = $m->prepare("SELECT * FROM pro_files WHERE userid=?, name=? ...")) {
$addGrp->bind_param('is ...',$userid, $name ...;
}
作为参考,选择我将使用这些dymanic列:
WHERE room in (g23,f43,g43) AND type in ('pptx,ppt,ai,pdf')
和使用的变量绑定他们是逗号(根据用户选择的内容生成,如果用户没有选择任何内容,变量将不存在):
$room = 'g23,f43,g43';
$type = 'pptx,ppt,ai,pdf';
使用旧的MYSQL方法,我可以刚刚创建一个查询字符串没有问题。当我还有bind_param
行来处理时,如何创建动态查询?
为了演示我已经添加了...
我需要动态生成查询。
我不能使用PDO,因为应用程序的其余部分目前正在使用MYSQLi,这项工作太棒了。
另外,是否有可能在IN子句中使用通配符?在这种情况下,我可以在PHP中创建'' = '*'
。但room in ('*')
不起作用。
您应该考虑一个已经涵盖这种用例的框架或[ORM](https://en.wikipedia.org/wiki/Object-relational_mapping)。 – Gumbo