从数据库表行中选择列值,其中 ID 在白名单数组中找到[重复]

问题描述 投票:0回答:2

我有上面的代码,我用它来内爆一些变量。 问题是我需要为

$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);
php where-in
2个回答
2
投票

你有 $hostess_name= array();循环内。移到上面

编辑:

一些提示:

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

btw,只是一个改进的小技巧 - 您可以使用单个查询,而不是运行许多 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).")";

0
投票

implode 是 php 的一个基本函数。它总是工作完美。 只需检查您的数组 $hostess_id_selected,它返回的内容。 我想这会对你有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.