Ben bir web uygulaması üzerinde güncelleme kullanıcı izinlerini girmek için bu kodu kullanıyorum:
$updaters = array();
for ($i = 1; $i <= 24; $i++){
if (isset($_POST['permsA['.$i.']']))
$updaters[] = '`'.$i.'` = \''.mysqli_real_escape_string($db, $_POST['permsA['.$i.']']).'\'';
}
$insert = mysqli_query($db,'UPDATE `tbl_perms` SET '.implode(',', $updaters). 'WHERE `userid` = '.$id)or die(mysqli_error($db));
Ben olsun hata SQL şöyledir:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `userid` = 1' at line 1
Ben hata kaldırmak için kodu yeniden yazmak mümkün görünmüyor olabilir: (
Bu permsA oluşturmak için kod
<?
while($i = mysqli_fetch_array($get_perms)){
$pname = $i[pname];
$id = $i[id];
?>
<div><input type="checkbox" tabindex="1" name="permsA[<? echo $id;?>]" value="1" <? if($permissionid[$id] == '1') {echo ' checked="checked" ';}?> /><?echo htmlspecialchars($pname);?></div>
<? } ?>
Burada hata üretir tam sorgu:
$insert = mysqli_query($db,'UPDATE `tbl_perms` '.$updaters.' WHERE `userid` = '.$id) or die(mysqli_error($db));
İşte bu sql oluşturur şeydir:
UPDATE `tbl_perms` SET WHERE `userid` = 1
Ve burada POST sonrasında değişkenler değişken dökümü var_dump($_POST['permsA'])
:
array(22) { [1]=> string(1) "1" [2]=> string(1) "1" [3]=> string(1) "1" [4]=> string(1) "1" [5]=> string(1) "1" [6]=> string(1) "1" [8]=> string(1) "1" [9]=> string(1) "1" [10]=> string(1) "1" [11]=> string(1) "1" [12]=> string(1) "1" [13]=> string(1) "1" [14]=> string(1) "1" [15]=> string(1) "1" [16]=> string(1) "1" [17]=> string(1) "1" [18]=> string(1) "1" [19]=> string(1) "1" [20]=> string(1) "1" [21]=> string(1) "1" [22]=> string(1) "1" [23]=> string(1) "1" }