gpt4 book ai didi

php - 下拉菜单和 where 语句

转载 作者:行者123 更新时间:2023-11-29 08:26:04 25 4
gpt4 key购买 nike

我有 4 个下拉菜单,提交时可能包含也可能不包含 mysql 查询中的 where 语句的值。基本上没有为每个可能的下拉组合编写 if 语句,我想找出一种方法来插入 where 语句 if $_POST['dropdownitem'] 不为空。在下面的 block 中,基本上任何带有 $_POST 的内容都可能存在,也可能不存在。

$select = dbz( )
->select( )
->from( array( 'l' => 'logs' ) )
->joinLeft( array( 'd' => 'dealers' ), 'l.dealerID = d.id' )
->joinLeft( array( 'p' => 'prospects' ), 'l.dealerID = p.id', array( 'id', 'name AS pname' ) )
->where( 'l.id = ?', $currentUser[ 'id' ] )
->where( 'l.dealerId = ?', $_POST[ 'dealerid' ] )
->where( 'logData LIKE ?', '%' . $_POST[ 'activitytype' ] . '%' );
->where( 'logTime >= ?', $today )
->where( 'logTime < ?', strtotime( $tomorrow ) );

$userLogs = dbz( )->fetchAll( $select );

最佳答案

您不可避免地需要以不同的方式验证每个发布的值,因此您至少需要进行一些条件检查,以确保您的查询构建正确。

将其封装在一个函数中,如下所示,如果值发生变化,可能会为您提供更好的灵 active 。我个人认为 switch 语句也将使将来更容易阅读和更改。

$select = dbz()
->select()
->from( array( 'l' => 'logs' ) )
->joinLeft( array( 'd' => 'dealers' ), 'l.dealerID = d.id' )
->joinLeft( array( 'p' => 'prospects' ), 'l.dealerID = p.id', array( 'id', 'name AS pname' ) )

public function addConditionals($query, $userId, array $data = array())
{
$select->where('l.id = ?', $userId);
foreach($data as $column => $value) {
switch(strtolower($column)) {
case 'dealerid':
$select->where('l.dealerId = ?', intval($value));
break;
case 'activitytype':
$select->where('logData = ?', $value));
break;
// etc...
}
}
}
addConditionals($select, $currentUser['id'], $_POST);

关于php - 下拉菜单和 where 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17887312/

25 4 0