php - 选择文本字段中包含变量的行

标签 php mysql entity-attribute-value

我有一个带有文本字段的 MySQL 表,假设字段名称是 Car。汽车的类型是文本。 我还有一些变量,例如名称、产品编号、日期、描述、地址、价格等。

现在我想从那个表中选择,只有在 Car 字段值中找到我的变量的行。

例如,我只想找到与我的变量匹配的行,如果 Car 文本如下,如果我的变量是 name = Hondaproduct number = 4222date = 20131223description = very cooladdress = Street 59price = 15000

<category>Compact car
<name>Honda XxX
<colour>Black
<productnumber>4222
<date>20131223
<code>US
<description>very cool
<address>Street 59
<price>15000
// ...

然后MySQL查询将只输出这一行。我还想作为第二种变体,输出类似的行,这些行只有一个不匹配的变量,例如,如果价格不匹配就可以了。

我不确定如何使用 MySQL 来做到这一点;也许有人知道并且可以提供帮助。

我认为这样的东西适用于第一个变体。

Select * From Car Where Car LIKE "%name%" AND Car LIKE "%productnumber%" AND ....

也许有人知道更好、更快的方法。比如下面是不是更好一些?

SELECT LOCATE("name", Car) AND LOCATE("productnumber", Car)

我不能将汽车列分成几个列,这是一个条件

最佳答案

肯定想要将您的car 列拆分为多个列(每条信息一个)。然后查询将变得简单明了,例如:

SELECT * FROM _table WHERE name = 'Honda' AND product_number = 4222 ...

...但是考虑到你的约束,你可以做这样的事情:

SELECT * FROM _table
WHERE
    car LIKE '<name>Honda XxX' AND
    car LIKE '<productnumber>4222' ...

如果您使用准备好的语句,您可能希望改用此模板查询:

...
WHERE
    car LIKE CONCAT ('<name>', ?) AND
    car LIKE CONCAT('<productnumber>', ?)...

但请允许我坚持:如果您的应用程序打算投入生产,并且您打算为多个用户提供服务,或者如果此表中有多个记录,请告诉谁负责这个结构非常,非常差。没有索引可以用,很快就不能用了。

关于php - 选择文本字段中包含变量的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17590377/

相关文章:

javascript - 点击后分页不显示结果

php - Laravel 4.2 多对多关系 : Can't read from pivot table

database - 表模块与领域模型

mysql - 产品数据库的多种变体

php - Magento 安装脚本中的 ALTER TABLE 不使用 SQL

php - 更改PHP版本后,Joomla无法连接MySQL

php - cURL POST 请求有效,Guzzle 6 无效

php - 从两个表中返回相同的值

mysql - 在 SELECT 语句中组合两个字段

php - 当用户在 Mysql 数据库中注册时为用户生成唯一 ID