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:
Der Code ist zum Speichern zuständig, wo er mir dann folgenden Fehler auswirft: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();
?>
So, nun frage ich mich: Why?Fatal error: Cannot pass parameter 3 by reference in C:\xampp\htdocs\test\usergroup.php on line 11
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!



Zitieren
