我有一個應用程序顯示數據庫表中的文件列表。我希望用戶能夠通過選擇將過濾文件列表的選項並僅顯示匹配的選項來創建組。組選項被添加到另一個表中供以後使用。在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