如果我不使用MySQL,PHP in_array 函数按预期工作 . 在此示例中,if语句将执行并显示包含关键字blue的数组,因为 in_array 函数能够在数组中查找关键字blue .
<?php
$keyword = "blue";
$array = array("red", "green", "blue", "yellow");
if (in_array($keyword, $array)) {echo "the array contains keyword $keyword";}
else {echo "the array does not contain keyword $keyword";}
?>
从MySQL中选择红色,绿色,蓝色,黄色时, in_array 无法做同样的事情 . 在这个例子中,如果我回显$ array,在Web浏览器中显示红绿蓝黄色,所以我知道蓝色在$ array变量中 . 但是,else语句执行并显示数组不包含关键字blue .
<?php
$keyword = "blue";
$con = new mysqli('domain','username','password','database');
$sql = "select * from colors";
$sql_query = $con->query($sql);
while ($row = mysqli_fetch_array($sql_query)) {
$array = $row['colors'];
if (in_array($keyword, $array)) {echo "the array contains keyword $keyword";}
else {echo "the array does not contain keyword $keyword";}
}
?>
如果有人在这里有任何提示或建议,我当然会很感激 .
1 回答
在SQL版本中,您将获得一个记录,其中应存在名为
colors
的字段 .但是这个字段包含一个字符串(可能是逗号分隔的列表,类似于
blue,red,...
),而不是数组 .因此,当您执行
in_array($keyword, $array)
时,您会触发PHP错误(但可能您当前没有设置error_report来显示它们) .你必须做的是将你在
colors
字段中获得的内容转换为数组 .在这种情况下,如上所述:
或者根据
colors
字段结构究竟是什么来适当的 .