我有一个表格,其中自定义列由管理员创建,每列都有自己的枚举'0','1'。您可以在此处选择列是真还是假。
现在我想要一个选项,管理员可以通过复选框更新此true或false。
复选框。
<div class="col-sm-9">
<?php
if(isset($produci[0])) {
foreach($produci as $key => $avlue) {
?>
<div class="row-fluid">
<label>
<input name="clickedproduct[]" type="checkbox" value="<?php echo $avlue['name']; ?>" <?php echo (($_SERVER['REQUEST_METHOD'] == 'POST') ? ((isset($_POST[$avlue['name']])) ? ' value="'.$avlue[$avlue['name']].'" checked' : ' value="'.$avlue[$avlue['name']].'"') : (($avlue[$avlue['name']] == '1') ? ' value="'.$avlue[$avlue['name']].'"checked' : ' value="'.$avlue[$avlue['name']].'"')); ?>>
<?php echo $avlue['name']; ?>
</label>
</div>
<?php } }else{
echo '<font color="red">Er zijn nog geen producten aangemaakt.</font>';
} ?>
</div>
我的PDO。
if(isset($_POST['clickedproduct']))
{ $values = array();
foreach($_POST['clickedproduct'] as $access )
{
$clickedproduct = '0'; // = bijv. 1 of 0
$column = $access; // = bijv. product
} // end of foreach.
$product_access = $dbh->prepare("UPDATE products_access SET `{$column}` = :enum WHERE products_access.id = :id");
$product_accessvar = trim($user['id']);
$product_access->bindParam(':id', $product_accessvar, PDO::PARAM_INT);
$product_access->bindParam(':enum', $clickedproduct, PDO::PARAM_INT);
$product_access->execute();
}
有人有解决方案吗?
答案 0 :(得分:0)
您应该通过以下方式切换ENUM列。
UPDATE table_name SET column_name = IF(column_name=1, 0, 1);
在您的代码中,
$sql = "UPDATE products_access SET `{$column}` = IF( `{$column}`=1, 0, 1) WHERE products_access.id = :id";
$product_access = $dbh->prepare($sql);
$product_accessvar = trim($user['id']);
$product_access->bindParam(':id', $product_accessvar, PDO::PARAM_INT);
//$product_access->bindParam(':enum', $clickedproduct, PDO::PARAM_INT);
$product_access->execute();