【问题标题】:SQL handle select with split strings带有拆分字符串的 SQL 句柄选择
【发布时间】:2020-05-09 11:28:05
【问题描述】:

我有一个看起来像这样的请求:

"SELECT  CLCLEUNIK
,NOM
,VILLE
,CODEP
FROM CLIENT 
WHERE NOM LIKE :nom COLLATE Latin1_general_CI_AI"

:nom 是一个字符串,可以是一个词或多个词。使用 php,我希望我的请求找到每个词的所有可能性,并且只保留每个词的共同点,但我找不到自己走。

我尝试将字符串拆分为 String[ ] 并对每个单词进行请求,但我不知道如何将结果存储在不同的变量中。

请帮助我。 谢谢。


编辑

这是我的php代码:

  public function test(Request $request){
    require __DIR__.DIRECTORY_SEPARATOR."..".DIRECTORY_SEPARATOR."Entity".DIRECTORY_SEPARATOR."sqlconnect.php";
    $nom = $request->request->has("nom") ? $request->request->get("nom") : "";
    $mots[]=explode(" ", $nom);
    if (sizeof($mots)>1){
      for($i=0; $i>sizeof($mots); $i++){



      }
    }else{
      $req ="SELECT  CLCLEUNIK, NOM, VILLE, CODEP FROM CLIENT WHERE NOM LIKE :nom COLLATE Latin1_general_CI_AI";
      $prepare = $pdo->prepare($req);
      $prepare->execute(
        [
          "nom" => "%{$nom}%"
        ]
      );

      $clientsrecherche = $prepare->fetchAll(PDO::FETCH_OBJ);

      foreach($clientsrecherche as $key => $objet){
        foreach($objet as $key2 => $obj){
          $obj=utf8_encode($obj);
          $response[$key][$key2] = $obj;
        };
      }                     
        return new JsonResponse([ "response" => $response]);
    }
   }

我不知道该放什么。

【问题讨论】:

  • 如果您的数组长度 >1,您可以使用循环将查询构造为 ... WHERE NOM IN (PARAM1,PARAM2...) ...
  • 嗨@DIe 你如何管理参数的数量?我只看到一个具有所有可能性的 Switch 案例,但它有很多代码......
  • 我不认为需要 switch 语句,参数数量也没有问题(也许我误解了什么)。在循环中,每次添加参数名称(后跟逗号)时,也会添加参数本身。请记住在退出循环时删除最后一个逗号和右括号,应该就是这样。如果我误解了,请张贴并举例说明 2 或 3 个参数以了解想法
  • @DIe 我的问题是我不知道我的变量中有多少个单词,所以我不知道如何动态地提出我的请求。我会把我的 php 代码放在我的帖子中给你看。对不起,如果你不明白这是我的英语。
  • @DIe 编辑完成

标签: php sql select request


【解决方案1】:

Juste 需要将“”替换为“%”,并且成功了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    相关资源
    最近更新 更多