0

在我的 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 中创建一些东西来检查每个逗号之前的值,并查看它是否与我可以指定的某个字符串匹配。

谢谢!

4

3 回答 3

3

然后你应该explode($slide)转换为整数

$parts = explode(',', $slide);
if(intval($parts[0]) == 55) {
    // Do stuff
}
于 2012-06-30T22:26:15.530 回答
2

比较用逗号连接的实际值!

$isChecked = in_array("5",explode(",",$slide))!=false?" checked=\"checked\"":"";

爆炸

编辑:刚刚注意到您只想检查逗号之前的值。这实际上比从字符串创建数组要快:

$isChecked = "5"==strstr($slide,',',true)?" checked=\"checked\"":"";

假设你有 PHP 5.3+。见strstr

于 2012-06-30T22:25:58.847 回答
1

您实际上应该使用 MySQLFIND_IN_SET()函数在 RDBMS 级别可靠地执行此操作。请参阅此 SO question,其答案说明了您的目标。

于 2012-06-30T22:56:54.543 回答