以下将成功找到客户提交的产品 * http://inks-etc.com/Canon/canon_inkdesign.php?ID=114 ID = 114来自$ _GET ['ID'],当进入SELECT接收产品时:价格,产品编号,描述,图像。现在我一直试图获得大约4个(LIMIT 4)更多类似的产品来捕获页面的左侧,所以如果客户选择LC41黑色,我也可以提供LC41青色,LC41洋红色,LC41黄色。我在想'SELECT Sub查询'会有所帮助。你能告诉我我必须修改什么,甚至再次开始执行这项任务。
$inksetc = htmlentities($_GET['ID']);
$sql2 = "SELECT Id, Product_Type, Product_No , miniImageFarm
FROM `Canon_INK`
WHERE IN
(SELECT Id= $inksetc FROM Canon_INK WHERE Id LIKE $inksetc)
LIMIT 4";
$result = mysqli_query($dbc,$sql2) or die(mysqli_error($dbc));
while($rows = mysqli_fetch_array($result)){
?>
答案 0 :(得分:0)
您不需要对此进行子查询,并且您需要使用通配符'%'
,以便您可以按模式进行搜索,因此$sql2
应该如下所示:
$sql2 = "SELECT Id, Product_Type, Product_No , miniImageFarm ";
$sql2 .= "FROM `Canon_INK` ";
$sql2 .= "WHERE Id LIKE '%".SUBSTR($inksetc,0,4)."%'";
我为%
添加了匹配搜索。
答案 1 :(得分:0)
我相信你想要这样的东西:
SELECT Id, Product_Type, Product_No, miniImageFar
FROM Canon_INK
WHERE SUBSTR(Id, 0, 4) = SUBSTR($inksetc, 0, 4)
阅读LIKE
运算符;它并没有说一个字符串就像另一个字符串,而是一个字符串匹配模式。
答案 2 :(得分:0)
$inksetc = htmlentities($_GET['ID']);// need to store LC41 in $_GET['ID'].
$sql2 = "SELECT Id, Product_Type, Product_No , miniImageFarm
FROM `Canon_INK`
WHERE Id IN
(SELECT Id FROM Canon_INK WHERE Id LIKE '%".$inksetc."%') // use Id instead of Id= $inksetc.
LIMIT 4";
$result = mysqli_query($dbc,$sql2) or die(mysqli_error($dbc));
while($rows = mysqli_fetch_array($result)){
>
答案 3 :(得分:0)
我假设“LC41 Black”类型值存储在Product_No列中 - 而不是Id列。我还假设您不希望原始产品出现在类似产品列表中。
因此,您可以将表连接到自身以获取结果,而不是使用子查询:
SELECT c.Id, c.Product_Type, c.Product_No, c.miniImageFarm
FROM Canon_INK AS c
INNER JOIN
Canon_INK AS OriginalProduct
ON
SUBSTR(c.Product_No, 0, 4) = SUBSTR(OriginalProduct.Product_No, 0, 4)
AND
c.Id != OriginalProduct.Id
WHERE
OriginalProduct.Id = $intsect
LIMIT 4;
您的查询目前尚不安全 - 请不要使用htmlentities函数逃避SQL的事情,而是查看mysqli_real_escape_string。