【发布时间】: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 编辑完成