【问题标题】:Need help in mysqlquery and php在 mysqlquery 和 php 中需要帮助
【发布时间】:2013-09-21 22:33:58
【问题描述】:

我正在做这样的查询:

$c = filterfunction($_POST['data']);

$sql="(descripcion LIKE '%".$c."%' or marca_repuesto LIKE '%".$c."%' or mod_nombre LIKE '%".$c."%' or anio LIKE '%".$c."%' or codigo LIKE '%".$c."%' )";

$query = mysql_query("
SELECT id,user,modelo,marca,marca_repuesto,descripcion,tipo,anio,cantidad,precio_costo,precio_lista,chasis,motor,codigo
FROM (repuestos left join marcas ON marca = m_id
left join modelos ON modelo = mod_id)
$sql 

");

一切正常,但是如果我在 repuestos.modelo 行中添加两个用“,”分隔的 id,则不起作用,而且我不知道如何使它与这一行中的多个 id 一起工作,非常感谢大家.

【问题讨论】:

  • 所以你正在尝试做 - id,id - 每个id 来自不同的表?如果是这样,请在其中一个上使用别名,或同时使用两者 - id as id1, id as id2 或在访问数组时使用 0 索引 - $row[0]/$row[1] 而不是 $row[id]/$row[id]
  • 当然可以,但我会在 repuestos.modelo 中添加 id,id 或 id,id,id,id。我认为最好的方法是在没有 repuestos.modelo 的情况下应用我的查询,然后,如果结果 = 0,则展开 respuestos.modelo 以在 $c 中搜索匹配项;你怎么看?非常感谢肖恩。

标签: php mysql explode implode


【解决方案1】:

从你的问题中并不能完全清楚你问的是什么。

如果要搜索单个匹配的id,则需要

 WHERE id = ?   

如果要搜索多个匹配的id,则需要

WHERE id IN (?,?,?,?)

还要注意你的OR LIKE 级联

    descripcion LIKE '%".$c."%' 
 or marca_repuesto LIKE '%".$c."%'
 or mod_nombre LIKE '%".$c."%' 
 or anio LIKE '%".$c."%' 
 or codigo LIKE '%".$c."%'

是灾难性糟糕表现的公式。 MySQL(和任何 RDBMS)不能为

使用索引
 column LIKE '%value%'

所以它必须扫描整个表。当 MySQL 遇到OR 时,它会再次扫描表。

您可能希望调查此应用程序的全文搜索。

【讨论】:

  • 谢谢琼斯,是的,我想从表 modelos 中的 repuestos.modelo 中搜索多重匹配 id。我要搜索“列 LIKE '%value%'”,但是,在表中,modelos 是模型的名称,例如“Ferrari”,当我搜索“Ferr”时,我想显示该表和其他表的结果匹配的元素。非常感谢你的时间。
  • idk怎么解释,但这基本上是我想做的,搜索“repuesto”描述,如果结果== 0,在模型的描述中搜索匹配:i.imgur.com/X0OYWrG.png跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多