如何使用PHP从一个MySQL表列中选择多个值

时间:2017-05-22 13:14:03

标签: php mysql

我有一个MySQL表名data_car。表数据如下所示:

id   name      car
1    john      BMW, Toyota 
2    terry     Nixan, Toyota

我的问题如何从汽车中选择特定数据。例如,我有一个包含丰田,宝马,日产的组合框标题车,我选择丰田这样的名字"名称"包含丰田将在我的计划中展示的价值的人。

我想要的输出如下:

name: john      car:toyota    payment:$1000

但不幸的是,当我在组合框中选择丰田时,结果总是宝马,并且总是这样出现:

name : john    car:toyota,BMW   payment:$1000

我的问题是,我可以从该列中选择丰田值吗?

4 个答案:

答案 0 :(得分:0)

您可以使用PHP执行此操作:

foreach ($values as $key => $value) {
    $cars = explode(',', $value['car']);
    foreach ($cars as $car) {
        switch ($car) {
            case 'toyota':
                $values[$key]['car'] = $car;
                break;

            default:
                # code...
                break;
        }
    }
}
  

我建议您重新构建数据库,将数据转换为   多对多的关系。

另见

答案 1 :(得分:0)

如果重新设计数据库会更好,如下所示:

CREATE TABLE drivers (
  driverid      int(11)       UNSIGNED NOT NULL auto_increment,
  driver        varchar(64),
  PRIMARY KEY   (driverid)
);

CREATE TABLE cars (
  carid         int(11)       UNSIGNED NOT NULL auto_increment,
  car           varchar(16),
  PRIMARY KEY   (carid)
);

CREATE TABLE driver_car (
  driverid      int(11),
  carid         int(11)
);

答案 2 :(得分:0)

如果您想以select形式执行此操作,然后加入到cost表,那么可以使用SQL拆分字符串,然后将外部引用添加到成本中。这样您就可以避免重新创建表格,尽管如上所述,这将是一种首选方法。

例如:

 SELECT id, name,
 PARSENAME(REPLACE(Split.a.value(',', 'VARCHAR(max)'),'-','.'),1) 'car' 
 FROM  
 (
 SELECT id, name,
 CAST ('<M>' + REPLACE([car], ',', '</M><M>') + '</M>' AS XML) AS Data 
 FROM   [table] 
 ) AS A 
 CROSS APPLY Data.nodes ('/M') AS Split(a)

答案 3 :(得分:0)

MySQL 8更新:

SELECT name, REGEXP_SUBSTR(car, 'Toyota') as carname FROM data_car