我已经设置了一个带有“外观”列的产品表,在这个列中它可以有多个范围,例如表格列中的所有逗号分隔的“1,6”。PHP查询停止LIKE停止记录重复?
我遇到的问题是,如果一个范围被添加到“1,6,8”范围似乎显示在10和11也是我认为是因为它在列中包含“1”。
我的代码是:
$query_RSsec = "SELECT * FROM look WHERE seolink = '$_REQUEST[range]'";
$RSsec = mysql_query($query_RSsec, $swede) or die(mysql_error());
$row_RSsec = mysql_fetch_assoc($RSsec);
$totalRows_RSsec = mysql_num_rows($RSsec);
$query_RSrange = "SELECT ranges.*, ranges.name as rname, ranges.seolink as rseo, ranges.image as rimage, category.*, category.name as cname, category.seolink as cseo FROM (ranges LEFT JOIN category ON ranges.category = category.id) WHERE look LIKE '%$row_RSsec[id]%' ORDER BY ranges.name ASC";
$RSrange = mysql_query($query_RSrange, $swede) or die(mysql_error());
$row_RSrange = mysql_fetch_assoc($RSrange);
$totalRows_RSrange = mysql_num_rows($RSrange);
$use = 'yes';
然后返回这些我有以下代码:
<?php do {
if (strlen($row_RSrange['rname']) > 10) {
$name = substr(str_replace('&','&',$row_RSrange['rname']),0,10) . '...';
} else {
$name = str_replace('&','&',$row_RSrange['rname']);
}
?>
<li><a title="<?php echo str_replace('&','&',$row_RSrange['rname']); ?>" href="/products/<?php echo $row_RSrange['cseo']; ?>/<?php echo $row_RSrange['rseo']; ?>"><img src="/prod-images/category/<?php echo $row_RSrange['rimage']; ?>" alt="<?php echo str_replace('&','&',$row_RSrange['rname']); ?>" title="<?php echo str_replace('&','&',$row_RSrange['rname']); ?>" width="127" height="127" /><br />
<?php echo $name; ?></a></li>
<?php } while ($row_RSrange = mysql_fetch_assoc($RSrange)); ?>
没有任何针对SQL注入的安全性。并且不推荐使用'mysql_'函数。真棒。 – Machavity 2014-09-10 12:44:01
@Machavity您是否对代码改进网站发表评论,只是抨击他的糟糕代码,或者您是否计划提供帮助? – Joe 2014-09-10 12:45:15
请提供表格中的样本数据,输入和预期结果。 – Bulat 2014-09-10 12:48:48