0

私はいくつかの変数を内破するために使用するこのコードを上に持っています。問題は、 に対して行ったのと同じものを作成する必要があること$hostess_name[]です $hostess_id_selected[]。私は何が間違っているのか分かりません。私がやったのと同じ方法で内破する必要があります$hostess_id_selected1

 foreach($hostess_id as $val) {
   $hostess_id_selected[] = $val;
   $sqlnomehostess="SELECT nome_hostess FROM hostess where id='$val'";
   $resultnomehostess=mysql_query($sqlnomehostess)or die(mysql_error());
   $hostess_name= array();

   while ($row=mysql_fetch_array($resultnomehostess,MYSQL_ASSOC)) {
     $hostess_name[] = $row['nome_hostess'];
   }
 }

 $hostess_id_selected1 = implode("-",$hostess_id_selected);
4

2 に答える 2

2

$hostess_name= array(); があります。ループ内。上に移動します

編集:

いくつかのヒント:

 foreach($hostess_id as $val) {
   $hostess_id_selected[] = $val;
 // this is pointless, i mean - you are recreating $hostess_id

ところで、改善のためのちょっとしたヒント - 多くの SQL クエリを実行する代わりに、単一のクエリを使用できます。

$sql = "SELECT GROUP_CONTACT(`nome_hostess` SEPARATOR '-') AS name_list 
        FROM `hostess` 
        WHERE id IN (".implode(',',$hostess_id).")";

$hostess_id の項目が必ずしも数値ではない場合:

$sql_ids = array();
foreach($hostess_id as $id)
    $sql_ids[] = mysql_real_escape_string($id);
$sql = "SELECT GROUP_CONTACT(`nome_hostess` SEPARATOR '-') AS name_list 
        FROM `hostess` 
        WHERE id IN (".implode(',',$sql_ids).")";

それとその後:

SQLクエリは、「-」で結合された名前を含む「name_list」という列を含む1行を返します。

ID と名前の順序を維持したい場合は、次のようにする必要があります。

$sql = "SELECT 
             GROUP_CONTACT(`nome_hostess` SEPARATOR '-') AS name_list,
             GROUP_CONTACT(`id` SEPARATOR '-') AS id_list 
        FROM `hostess` 
        WHERE id IN (".implode(',',$hostess_id).")";
于 2012-09-29T09:18:43.477 に答える
0

implode は php の基本的な機能です。それは常に完璧に機能します。配列 $hostess_id_selected を確認してください。役立つと思います。

于 2012-09-29T10:02:21.323 に答える