dougang6821 2016-07-17 08:32
浏览 24
已采纳

PHP创建MySql命令以从某些条件使用multi where子句

I have some conditions such as :

productId = 1 and marketId = 1
productId = 2 and marketId = 2
productId = 3 and marketId = 3
productId = 4 and marketId = 4
productId = 5 and marketId = 5

and I want to fetch that which they are in array to create single mysql command, count of this conditions are custom, I want to get result with one sql command like with:

SELECT * FROM images 
    WHERE productId = 1 AND marketId = 1 
    OR    productId = 2 and marketId = 2
    OR    productId = 3 and marketId = 3

how can I do that? My code is not correct and that sum all values:

 <?php
    $arr = [
        [
            'productId' => '1',
            'marketId' => '1',
        ],
        [
            'productId' => '2',
            'marketId' => '2',
        ],
        [
            'productId' => '3',
            'marketId' => '3',
        ],
    ];

    $command = "SELECT * FROM productImages ";
    for ($i = 0; $i < count($arr); $i++) {
         $command .= "WHERE productId = '" . $arr[$i]['productId'] . "'" . " AND marketId = '" . $arr[$i]['marketId'] . "'";
    }

    print_r($command);

?>

result is 12 not sql command

  • 写回答

1条回答 默认 最新

  • douqufan9148 2016-07-17 08:52
    关注
     <?php
        $arr = [
            [
                'productId' => '1',
                'marketId' => '1',
            ],
            [
                'productId' => '2',
                'marketId' => '2',
            ],
            [
                'productId' => '3',
                'marketId' => '3',
            ],
        ];
    
        $command = "SELECT * FROM productImages WHERE ";
    
        for ($i = 0; $i < count($arr); $i++) {
            $command .= "(productId = '".$arr[$i]['productId']."' AND marketId = '".$arr[$i]['marketId']."')";
            if ($i < count($arr) - 1) {
                $command .= ' OR ';
            } else {
                $command .= ';';
            }
        }
    
        print_r($command);
    
    ?>
    

    Result:

    SELECT * FROM productImages WHERE (productId = '1' AND marketId = '1') OR (productId = '2' AND marketId = '2') OR (productId = '3' AND marketId = '3');
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 yolov8边框坐标
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂