【问题标题】:Is there IN() function in Medoo?Medoo 中有 IN() 函数吗?
【发布时间】:2020-08-17 23:48:38
【问题描述】:

假设我有这段代码:

$this->database->debug()->select(
            'client',
            [
                'id',
                'name',
                'phone',
                'email',
                'address'
            ],
            Medoo::raw(
                'WHERE `id` IN(:clientIds)',
                [
                    ':clientIds' => $clientIDs
                ]
            )
        );

它给了我这个错误:

Notice: Undefined index: array in vendor\catfan\medoo\src\Medoo.php on line 519
Call Stack
#   Time    Memory  Function    Location
1   0.4014  404880  {main}( )   ...\test.php:0
2   0.4269  1080712 Writers\InvoicesWriter->Write( )    ...\test.php:9
3   0.4430  1136296 Writers\InvoicesWriter->getClientInfo( )    ...\InvoicesWriter.php:18
4   0.4430  1136752 Medoo\Medoo->select( )  ...\InvoicesWriter.php:83
5   0.4431  1136816 Medoo\Medoo->selectContext( )   ...\Medoo.php:1365
6   0.4433  1137496 Medoo\Medoo->whereClause( ) ...\Medoo.php:1075
7   0.4433  1137496 Medoo\Medoo->buildRaw( )    ...\Medoo.php:983
8   0.4434  1137496 Medoo\Medoo->typeMap( ) ...\Medoo.php:471

那么,我猜它不支持它?如果不是,您认为我应该如何安全地使用 IN()?

【问题讨论】:

  • 如果您想使用IN(),您需要添加与数组项一样多的占位符。使用内置的where 会更容易。
  • support for IN in the source,这似乎反映了@ÁlvaroGonzález 上面所说的内容。

标签: php medoo


【解决方案1】:

好像有is:

$database->select("account", "user_name", [
    "OR" => [
        "user_id" => [2, 123, 234, 54],
        "email" => ["foo@bar.com", "cat@dog.com", "admin@medoo.in"]
    ]
]);
// WHERE
// user_id IN (2,123,234,54) OR
// email IN ('foo@bar.com','cat@dog.com','admin@medoo.in')

但我认为你不能将它与原始对象一起使用。

【讨论】:

    【解决方案2】:

    是的。 *这是它的完成方式*

    $database->select("table_name", "column_name", 
        [
            "Value" => [option1, option2, option3, e.t.c]
      ]
    );
    
    • 示例
    $database->select("users", "user_id", 
        [
          "age" => [12, 15, 18, 14]
        ]
    );
    

    上面的例子说明了>>"SELECT `user_id` FROM `users` WHERE `age` IN(12, 15, 18, 14)"

    您可以找到更多示例here

    【讨论】:

      猜你喜欢
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-04
      相关资源
      最近更新 更多