【发布时间】:2013-10-22 18:31:07
【问题描述】:
伙计,这毫无意义,我花了几个小时试图弄清楚这一点,并在整个网站上进行了搜索。在数据库中,user_level 是 1,2,3 作为我内爆的值。我正在显示复选框,我希望在值与数据库中的值匹配时检查它们。当数据库中只有一个值(例如 user_level 的 1 或 2)时,这非常有效。现在使用 1,2,3,我简单地分解了该值,然后使用 in_array() 来生成结果,如果是,则添加复选框。由于某种原因,这不起作用,随机框似乎被选中。代码如下:
$sql = "SELECT user_level FROM table";
$result = query_db($sql);
$row = mysql_fetch_array($result);
$field_names = array(MEMBER => 'Member',
VISITOR => 'Visitor');
foreach ( $field_names as $key => $value )
{
$thePostIdArray = explode(',', $key);
//print_r($thePostIdArray); // testing output
$selected = ( in_array($row['user_level'], $thePostIdArray) ) ? 'checked="checked"' : '';
$options .= '<input type="checkbox" name="'.$perm_type.'[]" '.$selected.' value="'.$key.'"> '.$value. ' ';
}
$selected 值应该在正确的复选框上输出“选中”值,但事实并非如此。
【问题讨论】:
-
您应该在 foreach 之前转储
$row以确保它包含您要查找的内容。$field_names的值似乎没有意义......实际上,不要介意$row,因为它实际上并没有在任何地方使用。这是整个代码部分还是你编辑了一些东西?另外..如果您应该使用$row并且有几行...您需要为您期望返回的每一行执行while($row = mysql_fetch_array($result)) { .... }...(并且您应该使用msqli_或pdo bc更安全,哈哈...我现在将停止更新,对不起!) -
$row 正在显示数据库中的 user_level 值。当 user_level 中只有 1 位数字时,这非常有效。只有在添加逗号时才会搞砸。我认为 in_array() 无法正常工作。
-
您能否发布一个示例,说明 $row 中返回的内容?
MEMBER和VISITOR是$fieldnames中的常量吗?如果不是,那到底发生了什么?我不知道你想做什么....有多少复选框?两个? -
$row 结果值内爆到数据库中,如“1,2,3”和“1,2”。当我不使用 implode 并导致像 $row = 1 和 $row = 2 这样的单个值时,这非常有效。我改变的只是内爆,现在它不起作用。
-
是的,当你让我解释它是如何工作的时,它让我意识到我做错了什么谢谢 :) 我昨晚只睡了两个小时,也许这就是让我的思绪变得糊涂的原因。