当从 $_GET 变量中获取值并将其放入具有两个条件的 php 查询中时,我有一个 php 页面:
AND book_id = '$bookid"
AND book_date between coalesce('$bookdate',book_date) AND coalesce('$bookdate',book_date)
问题是这种情况:AND book_date between coalesce('$bookdate',book_date) AND coalesce('$bookdate',book_date)
要正常工作,查询需要"$bookdate"= null,并且在检索变量时,将值设置为字符串。
怎么做?
谢谢
王运算符:
$bookdate = $_GET['bookdate'] ?: null;
更多信息请点击此处:https://stackoverflow.com/a/1993455/12750122
似乎您只需要在查询中使用之前有条件地声明您的变量。
$bookdate = !strlen($bookdate) ? null : $bookdate
或者也许更合适的是来自$_GET
...
$bookdate = empty($_GET['bookdate']) ? null : $bookdate
。因为您的变量名称暗示了日期类型值,所以我将假设0
值不会被传递或对您的用例无效。 我这样说是因为empty()
评估0
true
。
*在尝试访问/操作超全局元素之前,应检查它们是否存在,以避免收到通知。 (例如 isset()
或empty()
或array_key_exists()
)
最终,不应直接将变量注入查询。 您应该使用预准备语句并将变量绑定到占位符。
在进行 SQL 查询之前检查变量:
$bookdate = !empty($bookdate) ? $bookdate : null;