it-swarm.com.de

SQL-Abfrageproblem in Joomla 3.x

Ich bin ziemlich neu in SQL und PHP und habe versucht, zwei Arrays in die Datenbank zu schreiben, aber ich konnte es bisher nicht herausfinden. Ich bekomme immer folgenden Fehler:

1054 Unbekannte Spalte 'Array' in 'Feldliste' SQL = UPDATE #__typsys SET usergroup = Array WHERE userid = 687

Ich habe es so versucht:

// Get an Array with all the Usergroups the user is in
$usergroups = JFactory::getUser()->getAuthorisedGroups();

// Building the updatequery
$query = $db->getQuery(true);
$query
    ->update($db->quoteName('#__typsys'))
    ->set($db->quoteName(usergroup) . ' = ' . $db->quote($usergroups))
    ->where($db->quoteName('userid') . ' = ' . $user->id)
;
// Executing the updatequery
$db->setQuery($query);
$db->execute();

Wenn ich einen normalen String wie "test" in die Datenbank schreibe, funktioniert alles einwandfrei, aber nicht mit einem Array. Ich habe jetzt stundenlang gesucht, aber keine Lösung gefunden. Hilfe wird sehr geschätzt !!!

Danke im Voraus!

1
Jakob

Dies liegt daran, dass $usergroups Ein Array und keinen einzelnen Wert zurückgibt. Es gibt Ihnen die Benutzergruppen-ID zurück, zu der der angemeldete Benutzer gehört. Wenn der aktuelle Benutzer zur Gruppe Registered und Administrator gehört, werden die IDs als Array zurückgegeben.

Dazu haben Sie folgende Möglichkeit:

// Get an Array with all the Usergroups the user is in
$usergroups = JFactory::getUser()->getAuthorisedGroups(); // returns Array ( [0] => 1 [1] => 8 )
$usergroups_str = implode(',',$usergroups); // returns (1,8)

// Building the updatequery
$query = $db->getQuery(true);
$query
    ->update($db->quoteName('#__typsys'))
    ->set($db->quoteName(usergroup) . ' = ' . $db->quote($usergroups_str))
    ->where($db->quoteName('userid') . ' = ' . $user->id)
;
// Executing the updatequery
$db->setQuery($query);
$db->execute();

Dadurch wird die Tabellenzeile für den angemeldeten Benutzer mit all seinen Zugriffsebenen aktualisiert. Außerdem würde ich vorschlagen, die Spalte usergroup nicht mit dem Beispiel Registeredusergroup name Zu aktualisieren. Und während des Holens können Sie es einfach explodieren lassen.

Hoffe das hilft

1
Liz.