【发布时间】:2013-06-18 15:04:10
【问题描述】:
我有一个代码应该从表中选择项目,其中字段 color_base1 和 color_base2 与特定颜色相似。
但是,目前我的代码只是返回表中的所有字段,有点忽略了我正在应用的 LIKE:
$result3 = $con -> prepare("SELECT * FROM item_descr WHERE (color_base1 LIKE CONCAT ('%', ? , '%') OR color_base2 LIKE CONCAT ('%', ? , '%')) AND id_item != $itemId LIMIT 4");
$result3 -> execute(array("$color_base1", "$color_base2"));
$row3 = $result3->fetch();
有人对如何构建 SQL 以及我应该如何构建它有任何意见吗?
【问题讨论】:
-
您正在选择 color_base1 包含字符串 $color_base1 的所有记录加上(联合,或...)其中 color_base2 包含搅拌 $color_base2 的所有记录。假设存储在 color_base1/2 中的颜色是 RGB 十六进制颜色代码(DC0000 表示深红色),如果您搜索 WHERE color_base1 LIKE "%C0%" 它将匹配 DC0000 的记录,但如果您搜索 LIKE "%D0C%"它不会匹配。那是你的问题吗?否则我没有得到你的问题......
-
我正在尝试获取其中 color_base1 类似于 $color_base1 或 color_base2 类似于 $color_base2 的记录。我使用 % 因为我的颜色是它们的实际名称(绿色、红色..),有时我有“浅绿色”,所以“浅绿色”应该类似于“绿色”
-
好的,但是您的查询有什么问题?除了一些 PHP 错误之外,您的查询应该可以完成工作。除非你想要一些不同于 OR 的东西:你需要 XOR(参见:en.wikipedia.org/wiki/Exclusive_or)吗?
标签: php sql pdo concat sql-like