我的问题是如何在 PHP 中从数据库中检索复选框值。以下代码无效。
<td>Hobby</td>
<?php
$result = mysqli_query($con,"SELECT hobby FROM simple WHERE id = id");
while($row = mysqli_fetch_array($result))
{
$focus = explode(",", $row['hobby']);
?>
<td>
<input type="checkbox" name="hobby[]" value="Cricket" size="17" <?php if(in_array("Cricket",$hobby)) { ?> checked="checked" <?php } ?> >Cricket
<input type="checkbox" name="hobby[]" value="Music" size="17" <?php if(in_array("Music",$hobby)) { ?> checked="checked" <?php } ?> >Music
<input type="checkbox" name="hobby[]" value="Reading" size="17" <?php if(in_array("Reading",$hobby)) { ?> checked="checked" <?php } ?> >Reading
<input type="checkbox" name="hobby[]" value="Study" size="17" <?php if(in_array("Study",$hobby)) { ?> checked="checked" <?php } ?> >Study</td>
<?php
}
?>
</tr>
最佳答案
改变声明,
$focus=explode(",",$row['hobby']);
收件人:
$hobby=explode(",",$row['hobby']);
此外,您可以使用三元运算符而不是 if else 来最小化代码:
<td>
<input type="checkbox" name="hobby[]" value="Cricket" size="17" <?php echo (in_array("Cricket",$hobby)) ? 'checked="checked" : '';?>>Cricket
<input type="checkbox" name="hobby[]" value="Music" size="17" <?php echo (in_array("Music",$hobby)) ? 'checked="checked" : '';?>>Music
<input type="checkbox" name="hobby[]" value="Reading" size="17" <?php echo (in_array("Reading",$hobby)) ? 'checked="checked" : '';?>>Reading
</td>
此外,@mapek 建议,您的 SQL 将获取所有记录。
$result = mysqli_query($con,"SELECT hobby FROM simple WHERE id = id");
因为 id
总是等于 id
。
你应该把它改成:
$result = mysqli_query($con,"SELECT hobby FROM simple WHERE id = '$id'");
使用数组最小化此代码的另一个版本:
<td>
<?php
$hobbies = array('Cricket', 'Music', 'Reading');
if (! empty($hobbies)) {
foreach ($hobbies as $myHobby) {
$checked = (in_array($myHobby, $hobby)) ? 'checked="checked"' : '';
?>
<input type="checkbox" name="hobby[]" value="<?php echo $myHobby;?>" size="17" <?php echo $checked;?>><?php echo $myHobby;?>
<?php
}
}
?>
</td>
关于php - 如何从 PHP 中的数据库中检索复选框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34670773/