我有一个运行MySQL查询的PHP代码,可以通过选择的过滤器对某些输出数据进行排序。
我遇到的问题是当我用1个字过滤时,即当我按颜色过滤时,它适用于RED,YELLOW等。但不适用于BLUE NAVY。
我认为添加'"
就足够了,但事实并非如此。
这是我目前的代码:
<?php
$colors = $con -> prepare("SELECT DISTINCT color_base1 FROM item_descr ORDER BY color_base1 ASC");
$colors ->execute();
while ($colorBoxes = $colors->fetch(PDO::FETCH_ASSOC))
{
echo "<input type='checkbox' class='regularCheckbox' name='color' value='".$colorBoxes[color_base1]."' /><font class='similarItemsText'> ".$colorBoxes[color_base1]."</font><br />";
}
?>
谢谢!
答案 0 :(得分:0)
您的数组索引需要引号。
更改:$colorBoxes[color_base1]
收件人:$colorBoxes['color_base1']
printf(
"<input type='checkbox' class='regularCheckbox' name='color' value='%s' /><font class='similarItemsText'> %s</font><br />",
$colorBoxes['color_base1'],
$colorBoxes['color_base1']
);
此外,当输入name
字段中有空格时,您的表单数据可能会提交非常奇怪。在提交表单后尝试var_dump($_REQUEST)
以查看交易是什么,但我建议您不要在color_base1
字段中使用空格。
答案 1 :(得分:0)
你的sql看起来正确,你的代码看起来也正确但是因为你正在使用SELECT DISTINCT
这可能导致问题,它只从两个单词中选择一个单词(它将与蓝色和海军不同),因此还有一种更好的建议方法。
+你正在做ORDER BY
所以如果你使用DISTINCT
,ORDER BY
就没有必要,因为他们做同样的工作。
item_descr
类型ENUM
或SET
,那么它们将按列索引而非列值排序。尝试不要这样做
SELECT color_base1 FROM item_descr ORDER BY color_base1 ASC