在我的SQL数据库中,我有一个查询,它将多行中的值转换为单个连接字符串。
id | image_filename | slides | languages | types
-------------------------------------------------------------------------
10 | filename.jpg | 55,4 | 1 | TN,CQ
在PHP中,我试图查看此图像与哪些幻灯片相关联。如果已关联,则会选中该复选框。
$isChecked = (strpos($slide,"5") !== false) ? " checked=\"checked\"" : "";
问题是上面的语句将返回true,因为其中包含5。需要做的是返回 false ,因为5不等于55。
如何在PHP中创建一些内容来检查每个逗号前的值,看看它是否与我可以指定的某个字符串匹配。
谢谢!
答案 0 :(得分:3)
您应该explode($slide)
然后转换为整数
$parts = explode(',', $slide);
if(intval($parts[0]) == 55) {
// Do stuff
}
答案 1 :(得分:2)
比较逗号连接的实际值!
$isChecked = in_array("5",explode(",",$slide))!=false?" checked=\"checked\"":"";
请参阅explode。
编辑:刚刚注意到你只想在逗号之前检查值。这实际上比从字符串创建数组更快:
$isChecked = "5"==strstr($slide,',',true)?" checked=\"checked\"":"";
假设你有PHP 5.3+。见strstr
答案 2 :(得分:1)
您应该使用MySQL FIND_IN_SET()
函数在RDBMS级别可靠地执行此操作。请参阅this SO question,其答案说明了您的目标。