Server Support Forum
Problem mit PHP 5.4 und MDB2-Funktionen/-Methoden

Zurück   Server Support Forum > >


Antwort
 
Themen-Optionen Thema bewerten
  #1  
Alt 17.08.2013, 20:36
TerraX TerraX ist offline
Registered User
 
Registriert seit: 12.2009
Alter: 41
Beiträge: 1.311
Problem mit PHP 5.4 und MDB2-Funktionen/-Methoden

Hy,

im Rahmen eines Serverumzuges haben wir von Debian 6 auf Archlinux umgestellt. Damit verbunden war der Wechsel auf PHP 5.4.

In unserem PHP-Script zur Verwaltung einer Liga verwenden wir MDB2. Nicht ganz konsequent aber das hat uns auf eine Spur gebracht:

In der global.php, die immer eingebunden wird steht:
Code:
// Adding Pear-Database Support
require_once 'MDB2.php';

$wc3cs_dsn           ='mysqli://user:passwd@localhost/Dbname';

$wc3cs_options=array
    (
    'debug'            => 2,
    'result_buffering' => true,
    );

$wc3cs_mdb2=&MDB2::factory($wc3cs_dsn, $wc3cs_options);

if (PEAR::isError($wc3cs_mdb2))
    {
    die ($wc3cs_mdb2->getMessage());
    }

$wc3cs_mdb2->loadModule('Extended');
Wenn ich es auf dem einfachen Weg mache, funktioniert es auch
Code:
// Season anlegen
if ($_GET["action"] == 'newseason' and $_GET["status"] == 'rdy') {
	$table_values=array($_POST["seasonname"],$_POST["leaguetype"]);
	$res = &$wc3cs_mdb2->query('INSERT INTO seasons (name, status, league_id) VALUES ("'.$_POST["seasonname"].'", 1, '.$_POST["leaguetype"].')');
	if (PEAR::isError($res)) { die($res->getMessage()); }
	$smarty->assign('ttext', 'Season wurde angelegt!');
}
Nehme ich aber die "Autoexecute"-Methoden:
Code:
	// War-Comment eintragen
	if ($_GET["action"] == 'matches' and $_GET["status"] == 'comment') {
		if (strlen(SafeTextarea($_POST["comment"])) > 5) {
			$poster = $UserClanTag.'|'.$UserName;
			$table_name='match_comments';
			$table_fields=array('username','war_id','datum','kommentar');
			$types=array('text','integer','date','text');
			$fields_values = array(
			    'username'    => $poster,
			    'war_id' => $_GET["war"],
			    'datum' => date("Y-m-d H:i:s"),
			    'kommentar' => SafeTextarea($_POST["comment"]));
			$res = $wc3cs_mdb2->extended->autoExecute($table_name, $fields_values,
			                        MDB2_AUTOQUERY_INSERT, null, $types);
			if (PEAR::isError($res)) { die($res->getMessage()." ---  ".$res->getUserinfo()); }
			$smarty->assign('ttext', '<br /><br />Kommentar wurde eingetragen! <a href="leaque.php?action=wars&status=teamwar&war='.$_GET["war"].'&season='.$_GET["season"].'">zurück zum Clanwar</a>');
		} else {
			$smarty->assign('uerror', true);
			$smarty->assign('uerror_text', 'Kommentar leer/zu kurz!');
		}
	}
Bekomme ich eine Fehlermeldung, wie:
Zitat:
MDB2 Error: unknown error --- _execute: [Error message: Unable to execute statement] [Last executed query: INSERT INTO match_comments (username, war_id, datum, kommentar) VALUES (?, ?, ?, ?)] [Native code: 0]
Im Moment stehe ich vor einem absoluten Rätsel ohne konkreten Anhaltspunkt, wo ich suchen soll. Ich habe noch unsere php.ini mit beigefügt. Ich weiß insgesamt ist der Code mehr als "optimierungsbedürftig" und wir arbeiten atm auch bereits an einem komplett neuen objektorientierten Script, aber das wird noch mind. 3 Monate dauern - für den Moment brauche ich eine Lösung für die aktuelle Saison; den kommenden Spieltag haben wir verschoben.

Last but not least - wir sind zwar ein ehrenamtliches Projekt, aber ein Kasten Bier im Wert von 20 EUR als Spende (Paypal, Scheck per Post, Überweisung whatever) ist schon drin, für denjenigen, der als Erster das Problem findet. Bei Bedarf stelle ich auch das gesamte Script zur Verfügung, es steht unter GPL v2 Lizenz.
Angehängte Dateien
Dateityp: txt php.txt (4,5 KB, 142x aufgerufen)

Geändert von TerraX (17.08.2013 um 20:50 Uhr)
Mit Zitat antworten

  #2  
Alt 18.08.2013, 20:12
TerraX TerraX ist offline
Registered User
 
Registriert seit: 12.2009
Alter: 41
Beiträge: 1.311
Hat noch keiner einen Ansatz? Wir leider auch noch nicht.

Wir haben es soweit eingezirkelt, als dass das Prepare-Statement noch durchgeht aber das execute fehlschlägt:

Zitat:
MDB2 Error: not found --- [Error message: Unable to bind to missing placeholder: 0]
Obwohl es genauso wie in der Doku durchgeführt wird. Wenn wir keine Lösung finden, werde ich mich dran setzen müssen und alles in klassische SQL-Statements umwandeln.

P.S.: Eingesetzt wird MariaDB gem. den aktuellen Archlinux-Repos. Die MDB2-Komponenten befinden sich auf dem aktuellsten Stand.

Geändert von TerraX (18.08.2013 um 20:37 Uhr)
Mit Zitat antworten
  #3  
Alt 21.08.2013, 19:26
TerraX TerraX ist offline
Registered User
 
Registriert seit: 12.2009
Alter: 41
Beiträge: 1.311
Wir haben erstmal wieder klassische Statements hinzugefügt, um das Problem kurzzeitig zu lösen. Allerdings besteht das Grundproblem immer noch. Hat jemand eine Idee wie ich PHP und dem MDB2 eine präzisere Fehlermeldung entlocken kann?
Mit Zitat antworten
  #4  
Alt 24.08.2013, 13:04
TerraX TerraX ist offline
Registered User
 
Registriert seit: 12.2009
Alter: 41
Beiträge: 1.311
Das Problem hat sich heute gelöst. Im Rahmen eines System-Updates lagen heute auch neue Pakete für PHP5.5 und php-pear vor. Nach deren Installation funktionierte wieder alles wie bisher gewohnt.
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
mdb2, php


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[OOP PHP] Methoden blockieren sich gegenseitig?! fragger1991 Perl / PHP / Python / bash 15 24.03.2011 18:23
FTP-Funktionen in PHP aktivieren QuodeeX Webserver 0 01.04.2009 10:56
Welche/r SpamFilter / Filter Methoden setzt ihr ein bzw. würdet ihr empfehlen ? Hagi Mail 2 17.12.2008 13:40
STRATO filtert mit wissenschaftlichen Methoden auch Audio-Spam erfolgreich aus Thorsten IT Allgemein 0 01.11.2007 12:23


Problem mit PHP 5.4 und MDB2-Funktionen/-Methoden
Problem mit PHP 5.4 und MDB2-Funktionen/-Methoden
Problem mit PHP 5.4 und MDB2-Funktionen/-Methoden Problem mit PHP 5.4 und MDB2-Funktionen/-Methoden
Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Search Engine Optimisation provided by DragonByte SEO (Pro) - vBulletin Mods & Addons Copyright © 2017 DragonByte Technologies Ltd.