我正在尝试从我的数据库中查看一些信息,以检查项目代码是否包含在项目“密钥”中。
我期待这段代码只向我展示代码不是键的行 - 但是我似乎得到了结果的混合(代码存在的地方和其他代码不存在的地方)
我尝试将true更改为false,并得到一组类似的结果。
while ($row = mysqli_fetch_array($query)){
$itemcode = $row['itemcode'];
$keys = $row['keys'];
if (strpos($metakeywords, $itemcode) !== true) {
echo 'code: ' . $itemcode . " keys: " . $metakeywords . "<br /><br />" ;
}
预期输出:
代码:ABC123键:播种机,绿色,窗口
代码:DEF456键:蓝色,户外,花园
实际输出:
代码:ABC123键:播种机,绿色,窗口
代码:CBA321键:红色,室内,播种机,CBA321
代码:DEF456键:蓝色,户外,花园
代码:FED654键:粉色,植物,FED654,自动浇水
有人可以帮忙吗?
答案 0 :(得分:2)
strpos()
在找到匹配项时不会返回true
,它会返回匹配的位置。
如果您想知道什么时候不匹配,请使用:
if (strpos($metakeywords, $itemcode) === false) {
你可能完全可以在SQL查询中完成,而不是在PHP中。
答案 1 :(得分:1)
strpos无法返回true。如果匹配则返回一个数字,否则返回false。由于您希望if语句块在不匹配时运行,因此将true
更改为false
并将 !==
更改为===
:
if ( strpos($metakeywords, $itemcode) === false ) {