Hallo liebe Community,
ich bin gerade damit beschäftigt, meine alten MySQL-Anfragen - prozedural - mit MySQLi OO. umzustellen.
Und es tauchen komische Fehlermeldungen auf und nach langem Googlen gebe ich auf und frage Euch an dieser Stelle was es sein könnte.
alter Code
Neuer Ansatz der nicht funktioniert.
Fehlermeldung ist:
Bei mir ist die PHP-Erweiterung und PHP 5.5 enthalten nur weis ich jetzt nicht, warum diese Fehlermeldung auftaucht.
Ich hoffe sehr, Ihr könnt mir da vielleicht weiterhelfen.
LG, Davicito.
ich bin gerade damit beschäftigt, meine alten MySQL-Anfragen - prozedural - mit MySQLi OO. umzustellen.
Und es tauchen komische Fehlermeldungen auf und nach langem Googlen gebe ich auf und frage Euch an dieser Stelle was es sein könnte.
alter Code
PHP:
<?php
$connection = mysql_connect('localhost',$user , $pw);
mysql_select_db($_SESSION['db'],$connection)
OR die('Die Verbindung zur Datenbank schlug fehl: '. mysql_error());
/*--------- check only disponent rights -----------*/
$rights = array('select','insert','UPDATE','delete', 'create','drop','reload', 'ALL PRIVILEGES','usage');
$info = mysql_query("SHOW GRANTS FOR CURRENT_USER");
$data = mysql_result($info, 0, 0);
// Teile $data-Stream in Tokens ein.
$token = explode(" ", $data);
//Zum Speichern aller verfügbaren Benutzerrechte, in eine Session "userRights", wird ein Session-Array angelegt/definiert.
$_SESSION['userRights'] = array();
//Prüfe Tokens, ob es sich um ein Userrecht handelt
foreach($token as $val){
//Wenn Token mit Komma abschließt, wird mit strtok, das Komma entfernt.
$val = strtok($val,',');
/*Durch explode() wird auch die Stringfolge "ALL Privileges" für Adminrechte (Superuser) in zwei
seperate Tokens gesplittet. Für die Funktionlität im Programm braucht man diese zwei Tokens,
aber wieder als ein Token*/
if(strcasecmp($val, 'all') == 0)
$val .= ' privileges';
}
...
?>
Neuer Ansatz der nicht funktioniert.
PHP:
<?php
...
public static function login($host, $bn, $pw, $db)
{
self::$resDB = new \mysqli($host, $bn, $pw, 'k&k-psm-'.$db);
if(self::$resDB && !isset($_SESSION['bn_is_logged'])){
$_SESSION['bn_is_logged'] = true;
$_SESSION['bn'] = $bn;
// Aufruf der Methode zum Auslesen des passenden Benutzerrechtes
self::loadRights();
return self::$resDB;
}else if(self::$resDB->connect_errno){
throw new \Exception('Verbindung zum DB-Server fehlgeschlagen! ');
}
}
private static function loadRights(){
$rights = array('select','insert','UPDATE','delete', 'create','drop','reload', 'ALL PRIVILEGES','usage');
$reqRights = "SHOW GRANTS FOR CURRENT_USER";
// Statement vorbereiten
$result = self::$resDB->prepare($reqRights);
// an die DB schicken
$result->execute();
$result ->get_result();
return $result->fetch_row();
...
?>
Fehlermeldung ist:
PHP:
Fehlerausgabe: "Fatal error: Call to undefined method mysqli_stmt::fetch_row() in C:\..."
Bei mir ist die PHP-Erweiterung und PHP 5.5 enthalten nur weis ich jetzt nicht, warum diese Fehlermeldung auftaucht.
Ich hoffe sehr, Ihr könnt mir da vielleicht weiterhelfen.
LG, Davicito.
Zuletzt bearbeitet: