Hallo Leute,

ich programmiere gerade ein Benutzergruppen-System mit PHP und MySQLi. Dazu verwende ich, um mich gut vor Angriffen schützen zu können, so genannte Prepared Statements.

Um einfach Berechtigungen hinzufügen zu können, habe ich alle Rechtenamen in einem Array gespeichert, wozu er mir dann ganz simpel ein Formular generiert.

Hier das Ganze einmal in gekürzter Version:
PHP-Code:
<?php 
$perm_hash 
= array('perm_user'); 
foreach(
$perm as $perms
    { 
    
$sql1.= ', '.$perms
    
$sql2.= ', ?'
    
$sql3.= 'i'
    
$sql4.= ', '.((isset($_POST[$perms]) ? $_POST[$perms] : 0)); 
    } 
$query $SQL->prepare('INSERT INTO `usergroup` (`group_name`, `group_description`'.$sql1.') VALUES (?, ?'.$sql2.')'); 
$query->bind_param('ss'.$sql3$_POST['group_name'], $_POST['group_description'].$sql4); 
$query->execute(); 
?>
Der Code ist zum Speichern zuständig, wo er mir dann folgenden Fehler auswirft:

Fatal error: Cannot pass parameter 3 by reference in C:\xampp\htdocs\test\usergroup.php on line 11
So, nun frage ich mich: Why?

Wenn ich anstatt $sql4 einfach $_POST['perm_user'] hinschreibe, funktioniert das super. Warum klappt es nur nicht in dem Teil direkt und wie kann ich das Problem beheben? Möchte ja nicht immer alle 100 Abfragen bearbeiten, nur weil ich mal ein Recht hinzufüge/entferne.

Ich bedanke mich im Voraus!