Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 相关产品SQL查询_Php_Mysql_Sql_Pdo_Sql Like - Fatal编程技术网

Php 相关产品SQL查询

Php 相关产品SQL查询,php,mysql,sql,pdo,sql-like,Php,Mysql,Sql,Pdo,Sql Like,我试图在我的网站上展示一些类似于相关产品的东西。我已经测试了以下查询,没有发现错误;但我也没有得到任何结果 <?php $relatedStmt = $db->query("SELECT * FROM items WHERE tag LIKE id = 1 LIMIT 3"); ?> 我还尝试了%1%,它显示了所有结果,我假设代码认为查询只是从项中选择* 列中的标记以以下格式显示:tagone、two、three、four,因此我尝试显示具有类似标记的产品,因此我使

我试图在我的网站上展示一些类似于相关产品的东西。我已经测试了以下查询,没有发现错误;但我也没有得到任何结果

<?php 
    $relatedStmt = $db->query("SELECT * FROM items WHERE tag LIKE id = 1 LIMIT 3");
?>
我还尝试了%1%,它显示了所有结果,我假设代码认为查询只是从项中选择*

列中的标记以以下格式显示:tagone、two、three、four,因此我尝试显示具有类似标记的产品,因此我使用LIKE子句

当前查询将与此查询关联:从id=1的项中选择*。因此,LIKE id=1是查找与此查询匹配的标记以显示相关产品。

我不确定您的查询中的id=1,但无论如何,您可以尝试这样做:从标记“%search\u this\u tag%”限制3的项目中选择*。它是操作数之间用于字符比较的字符,带有通配符

在mysql函数中,最接近您想要的可能是或。在其他问题中,例如和,存在拆分解决方案。然而,即使如此,也没有很好的方法将连接的标记列中的单个标记与表中其他行的单个标记进行比较

因此,我认为最好将标记移动到它们自己的表中,并将item_id作为外键。那么解决办法是:


你能给我们看一个表格的例子吗?想象一下LIKE as CONTAINS-WHERE tag LIKE%red%会找到所有行,其中tag*包含*字符串red`@ncdreamy我用表格截图更新了问题。好的,那么你想从该表格中提取什么?查看表时,您的查询没有任何意义。在这种情况下,您可以简单地执行SELECT*FROM items,其中tag=SELECT tag FROM items,其中id=1,但这与说SELECT*FROM items,其中id=1相同。我真的被你的问题弄糊涂了。请注意,如果没有ORDER BY,LIMIT几乎没有意义。我不会尝试搜索一个精确的标签。我想匹配id=1行的标签。@谢谢,我会在我这边更改的。
-- Related Items
SELECT *
  FROM items
 WHERE id in (SELECT DISTINCT item_id
                FROM tags t
                JOIN (SELECT tag
                        FROM tags
                       WHERE item_id = 1
                      ) t1 ON t1.tag = t.tag
               WHERE item_id != 1
              )
;