在 MySQLi 查询中使用三元运算符
Using ternary operator in MySQLi query
我想在我的 MYSQLi 查询中使用三元运算。我搜索了论坛并找到了如何完成的答案,但就我而言,它根本不起作用。我会 post 我试过的:
$topsearch_listings = mysqli_query($conn, "SELECT * FROM listing WHERE published='yes' AND topsearch=1 ".$selected_category == 'All' ? '' : 'AND category='$selected_category''." ORDER BY rand()");
所以我想做的是,如果所选类别等于 "All"
,什么都不做,如果所选类别不等于全部,则添加 AND category='$selected_category'
。我的三进制有什么问题,如何在我的查询中使用它?
你可以试试这个
$cond = $selected_category == 'All' ? "" : " AND category='$selected_category' ";
$topsearch_listings = mysqli_query($conn, "SELECT * FROM listing WHERE published='yes' AND topsearch=1 ".$cond." ORDER BY rand()");
使用
MySQLi 预处理语句
在这里阅读更多相关信息
https://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php
像这样的查询只不过是一个字符串,所以同样对待它 - 操作员需要知道它的边界在哪里 - 因此:
$topsearch_listings = mysqli_query($conn, "SELECT * FROM listing WHERE published='yes' AND topsearch=1 ". ($selected_category == 'All' ? '' : 'AND category=\''.$selected_category.'\'') ." ORDER BY rand()");
请务必了解执行这样的查询是不安全的。我建议对开放案例(全部)和特定案例(有类别)执行不同的查询。另外,您应该使用绑定变量或至少尝试转义输入。
我想在我的 MYSQLi 查询中使用三元运算。我搜索了论坛并找到了如何完成的答案,但就我而言,它根本不起作用。我会 post 我试过的:
$topsearch_listings = mysqli_query($conn, "SELECT * FROM listing WHERE published='yes' AND topsearch=1 ".$selected_category == 'All' ? '' : 'AND category='$selected_category''." ORDER BY rand()");
所以我想做的是,如果所选类别等于 "All"
,什么都不做,如果所选类别不等于全部,则添加 AND category='$selected_category'
。我的三进制有什么问题,如何在我的查询中使用它?
你可以试试这个
$cond = $selected_category == 'All' ? "" : " AND category='$selected_category' ";
$topsearch_listings = mysqli_query($conn, "SELECT * FROM listing WHERE published='yes' AND topsearch=1 ".$cond." ORDER BY rand()");
使用 MySQLi 预处理语句 在这里阅读更多相关信息 https://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php
像这样的查询只不过是一个字符串,所以同样对待它 - 操作员需要知道它的边界在哪里 - 因此:
$topsearch_listings = mysqli_query($conn, "SELECT * FROM listing WHERE published='yes' AND topsearch=1 ". ($selected_category == 'All' ? '' : 'AND category=\''.$selected_category.'\'') ." ORDER BY rand()");
请务必了解执行这样的查询是不安全的。我建议对开放案例(全部)和特定案例(有类别)执行不同的查询。另外,您应该使用绑定变量或至少尝试转义输入。