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 查询返回 1 行,其中包含名为“name_list”的列,其中包含用“-”连接的名称。

如果你想保持 id 和 name 的顺序 - 你应该这样做:

$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 回答