0

次の配列があります。

 $rqt="SELECT * FROM `client_gestion_compte` WHERE `id_company`='".$societe['id']."' AND `id_gestionnaire_client`='".$_SESSION['id']."'" ;
 $res=mysql_query($rqt);

 $values = array();
 while($donnees=mysql_fetch_assoc($res))
 {
     $values[] = $donnees['compte'] ;
 }

データベースで検索クエリを作成するために、この配列の値を使用したいと思います。配列のすべての値を使用する必要がありますが、問題は、配列内にいくつの項目があるかわからないため、この条件が $value などのように手動で行うことができないことです...

だから私はこのようにしてみました。

`$sql="SELECT * FROM `debiteur` INNER JOIN `creance` ON `creance`.`n_doss` = `debiteur`.`n_doss` WHERE `creance`.`id_company`=".$societe['id']." AND `debiteur`.`nom` LIKE '%".$_GET['s']."%' AND `creance`.`code_client` LIKE '%".$values."%' OR `creance`.`id_company`=".$societe['id']." AND `debiteur`.`prenom` LIKE '%".$_GET['s']."%' OR `creance`.`id_company`=".$societe['id']." AND `debiteur`.`raison_sociale` LIKE '%".$_GET['s']."%' OR `creance`.`id_company`=".$societe['id']." AND `debiteur`.`siret` LIKE '%".$_GET['s']."%' OR `creance`.`id_company`=".$societe['id']." AND `debiteur`.`adresse` LIKE '%".$_GET['s']."%' OR `creance`.`id_company`=".$societe['id']." AND `debiteur`.`adresse2` LIKE '%".$_GET['s']."%' Or `debiteur`.`ville` LIKE '%".$_GET['s']."%' OR `creance`.`id_company`=".$societe['id']." AND `debiteur`.`code_postal` LIKE '%".$_GET['s']."%' OR `creance`.`id_company`=".$societe['id']." AND `debiteur`.`tel` LIKE '%".$_GET['s']."%' OR `creance`.`id_company`=".$societe['id']." AND `debiteur`.`tel2` LIKE '%".$_GET['s']."%' Or `debiteur`.`fax` LIKE '%".$_GET['s']."%' OR `creance`.`id_company`=".$societe['id']." AND `debiteur`.`fax2` LIKE '%".$_GET['s']."%' Or `debiteur`.`gsm` LIKE '%".$_GET['s']."%' OR `creance`.`id_company`=".$societe['id']." AND `debiteur`.`gsm2` LIKE '%".$_GET['s']."%' OR `creance`.`id_company`=".$societe['id']." AND `debiteur`.`e_mail` LIKE '%".$_GET['s']."%' GROUP BY `creance`.`n_doss`  ";

問題はこの行にあります creance.code_client LIKE '%".$values."%'

たとえば、values[1] のような 1 つの値だけでなく、配列のすべてのカスタム値を検索する方法がわからないためです。

4

3 に答える 3

1
$sql = "SELECT * FROM `debiteur` 
INNER JOIN `creance` ON `creance`.`n_doss` = `debiteur`.`n_doss` 
WHERE {...}
AND (`creance`.`code_client` LIKE '%" . implode("%' OR `creance`.`code_client` LIKE '%", $values) . "%')
{...}";
于 2012-11-05T14:31:39.120 に答える
1

foreachループを使用するかimplode、配列のすべての要素をトラバースする必要があります。

$sql="SELECT * FROM `debiteur` INNER JOIN `creance` ON `creance`.`n_doss` = `debiteur`.`n_doss` WHERE `creance`.`id_company`=".$societe['id']." AND `debiteur`.`nom` LIKE '%".$_GET['s']."%' AND ";
 foreach($values as $v)  {
  $sql .= `creance`.`code_client` LIKE '%".$v."%' OR " ;
 }

 $sql .= " `creance`.`id_company`=".$societe['id']." AND `debiteur`.`prenom` LIKE '%".$_GET['s']."%' OR `creance`.`id_company`=".$societe['id']." AND `debiteur`.`.....";
于 2012-11-05T14:18:15.803 に答える
0
$rqt="SELECT * FROM `client_gestion_compte` WHERE `id_company`='".$societe['id']."' AND `id_gestionnaire_client`='".$_SESSION['id']."'" ;
 $res=mysql_query($rqt);

 $values = array();
 while($donnees=mysql_fetch_assoc($res))
 {
     $values[] = $donnees['compte'] ;
 }

 $value_query=implode(",",$values);

 //Place it like this in your query

 creance.code_client IN ('".$value_query."')
于 2012-11-05T14:29:01.743 に答える