使用

时间:2017-10-14 12:10:27

标签: php mysql foreach explode

id | ozID  | ozDa1     | ozDa2     |  ozDa3
-----------------------------------------------
 1 | 3,4   | Khar      | Lorem     | Emre
 2 | 1,2   | Imson     | Berkay    | ade  
 3 | 2     | abc       | Goksel    | casc
 4 | 5     | teq       | Insanlik  | fdsc
 5 | 1,5,2 | asd       | Oyle      | asdas
 6 | 2,1   | fav       | Boyle     | dsssa
 7 | 3     | qwrewq    | Filan     | dcsd

我可以写下这样的内容:

$partNameWD->ozDa2; // Berkay    

但最后的数字可以变化,如:ozDa4

首先,我从ozID表中获取数据,例如:1,2

1,2是什么意思?

它指向列号:ozDa1ozDa2

访问此号码是这样的:

$ozColNo = explode(",", $partNameWD->ozID);

foreach (ozColNo as $ozColId) {
    echo ozColId." - "; // 1 - 2
}

那么我的问题是什么?

如何使用这些数字从列中获取数据?那么,我如何从一个和第二个

打印数据

必须进行转换:ozDa1 // ImsonozDa2 // Berkay

请告诉我方法吗? 感谢

2 个答案:

答案 0 :(得分:0)

我并非100%确定我是否正确理解了这个问题,但您可以获得"列号"之间的映射。和#34;列名"在information_schema.columns。因此,如果给您一个号码,您可以使用以下方式查找名称:

select column_name
from information_schema.columns
where table_name = @table_name and table_schema = @table_schema and
      ordinal_position = @op;

你可以用一种稍微复杂的方法做一组列(因为我认为排序很重要)

select group_concat(c.column_name order by cols.ordering) as columns
from (select 1 as colpos, 1 as ordering union all
      select 2, 2
     ) cols join
     information_schema.columns c
     on c.ordinal_position = cols.colpos
where table_name = @table_name and table_schema = @table_schema;

答案 1 :(得分:0)

试试这个。

$output= $partNameWD->{'ozDa' . $ozColId};
echo $output;

查看PHP.net网站了解

http://php.net/manual/en/language.variables.variable.php

  

注意

     

进一步解除引用数组的变量属性   PHP 5和PHP 7之间的不同语义.PHP 7.0迁移   指南包含有关表达类型的更多详细信息   改变了,以及如何放置花括号以避免歧义。