php - MySQL - 在多值字段中搜索

标签 php mysql

在我的数据库表中,我有以下字段:

表格供应商:

  • ID
  • 姓名
  • 车辆

一个供应商可以拥有多辆车辆。 “车辆”字段将存储多个值。目前,我正在对“管道”符号上的值进行定界,尽管如果需要,可以将其更改为逗号。

在我的前端表单上,我有一个复选框列表 - 用户可以选择多辆车辆。后端脚本需要进行搜索并返回包含任何指定车辆 ID 的所有供应商。

换句话说,我们正在多值字段中使用多个值进行搜索。

复选框列表名称为vehicle_type[],最终将出现在$_POST数组中,如下所示(例如):

Array 
( 
    [0] => 1 
    [1] => 4 
    [2] => 6 
)

这可以做到吗?显然我可以使用连接表来做到这一点,但理想情况下我想这样做。如果有帮助的话,我正在使用 PHP 作为我的脚本语言。

最佳答案

The field 'vehicles' will store multiple values. At the moment I am delimiting the values on a 'pipe' symbol, although this can be changed to a comma if need be.

请不要这样做。在文本字段中存储分隔数据并不比将其存储在平面文件中更好。数据变得不可查询。

你想要a nice, happy, normalized database .

CREATE TABLE Suppliers (
    supplier_id INTEGER PRIMARY KEY,
    ...
);

CREATE TABLE Vehicles (
    vehicle_id INTEGER PRIMARY KEY,
    ...
);

CREATE TABLE Supplier_Vehicles (
    supplier_id INTEGER NOT NULL REFERENCES Suppliers(supplier_id),
    vehicle_id INTEGER NOT NULL REFERENCES Vehicles(vehicle_id),
    UNIQUE KEY(supplier_id, vehicle_id)
);

-- Grab all the Vehicles for Supplier 39
SELECT Vehicles.*
  FROM Vehicles, Supplier_Vehicles
 WHERE Supplier_Vehicles.supplier_id = 39
   AND Supplier_Vehicles.vehicle_id = Vehicles.vehicle_id

The checkbox list name is vehicle_type[] and will end up in the $_POST array as (for example) [...] Is this possible to do?

这很有可能,而且是个好主意。尝试一下,看看它的效果如何。

关于php - MySQL - 在多值字段中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3337441/

相关文章:

php - 如何编写查询以获取不同行的列值,并通过逗号分隔成PHP中的单行

javascript - 在php中检索json数据: json_decode not working?

php - 是否可以在 PhpUnit 中的测试用例之外创建模拟?

php - 显示 2 随机行而不是 1 行

mysql - 错误代码 : 1005. 无法创建表 '...' (errno: 150)

mysql - Pchart - 从 MySQL 中检索数据

PHP 回调:对于类的方法是否有等价于::class 的方法?

mysql - 终止大型 InnoDB 回滚会损害我的表吗?

java - Mysql Android 连接错误

php - 计算数据库中存在的相同项目的总数