php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.07.2008, 22:48  
Neuer Benutzer
 
Registriert seit: 25.07.2008
Beiträge: 10
webbies befindet sich auf einem aufstrebenden Ast
Standard PDOStatement erweitern

Hallo,

ich möchte die PDO und PDOStatement ein wenig erweitern, um die Anzahl der Queries und deren Laufzeit zu ermitteln. Mein Problem ist nun aber, dass ich bei der Verwendung von bindParam nach dem execute die Meldung

Invalid parameter number: no parameters were bound

bekomme. Hier mal meine Klassen

PHP-Code:
class DB extends PDO
{
 public static 
$numberOfQueries 0;
 
 public static 
$queryTime 0;
 
 public function 
__construct(Configuration $config, array $driver_options = array('PDO_ATTR_PERSISTENT' => true))
 {
  try
  {
   switch(
$config->dbType)
   {
    case 
"mysql":
     
$dsn 'mysql:host=' $config->dbHost ';dbname=' $config->dbName;
     break;
   }
 
   
parent::__construct($dsn$config->dbUser$config->dbPass$driver_options);
 
   
$this->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
 
   
$this->setAttribute(PDO::ATTR_EMULATE_PREPAREStrue);
 
   
$this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('DBStatement', array($this)));
  }
  CATCH(
PDOException $e)
  {
   die();
  }
 }
 
 public function 
query($statement)
 {
  
$this->increaseQueryCounter();
 
  
$timeStart microtime(true);
 
  
$res parent::query($statement);
 
  
$this->queryTime $this->queryTime + (microtime(true) - $timeStart);
 
  return 
$res;
 }
 
 public function 
exec($statement)
 {
  
$this->increaseQueryCounter();
 
  
$timeStart microtime(true);
 
  
$res parent::exec($statement);
 
  
$this->queryTime $this->queryTime + (microtime(true) - $timeStart);
 
  return 
$res;
 }
 
 public function 
increaseQueryCounter()
 {
  
self::$numberOfQueries++;
 }
 
 public function 
getNumberOfQueries()
 {
  return 
self::$numberOfQueries;
 }
 
 public function 
getQueryTime()
 {
  return 
$this->queryTime;
 }

PHP-Code:
class DBStatement extends PDOStatement
{
 public 
$db;
 
 protected function 
__construct(DB $db)
 {
  
$this->db $db;
 }
 
 public function 
execute(array $input_parameters = array())
 {
  
$this->db->increaseQueryCounter();
 
  
$timeStart microtime(true);
 
  
$res parent::execute($input_parameters);
 
  
$this->db->queryTime $this->db->queryTime + (microtime(true) - $timeStart);
 
  return 
$res;
 }

Folgendes geht einwandfrei

PHP-Code:
$dbh = new DB($config);
 
$sql "SELECT * FROM user";
$sth $dbh->prepare($sql);
$sth->execute();
 
$sql "SELECT * FROM user WHERE uID = :uID";
$sth $dbh->prepare($sql);
$sth->execute(array('uID' => 1)); 
aber hierbei gibt es den genannten Fehler

PHP-Code:
$sql "SELECT * FROM user WHERE uID = :uID";
$sth $dbh->prepare($sql);
$sth->bindParam('uID'$varPDO::PARAM_INT);
$sth->execute(); 
kommentiere ich die execute Funktion in DBStatement aus, geht auch das einwandfrei. Kann mir jemand sagen, wie ich das zum Laufen kriege?

Viele Grüße

webbies
webbies ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 26.07.2008, 01:00  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Wenn Du ein leeres Feld an PDOStatement::execute() übergibst, werden die gebundenen Parameter entfernt. Genau das passiert bei
Zitat:
public function execute(array $input_parameters = array())
{
...
$res = parent::execute($input_parameters);
...


$sth->execute();

Geändert von David (26.07.2008 um 01:07 Uhr).
David ist offline   Mit Zitat antworten
Alt 26.07.2008, 08:57  
Neuer Benutzer
 
Registriert seit: 25.07.2008
Beiträge: 10
webbies befindet sich auf einem aufstrebenden Ast
Standard

genau daran lag es! Also ich heute morgen wach wurde ist mir die Lösung auch sofort eingefallen, vielleicht kennt ja jemand dieses Gefühl Manchmal sollte man wohl eine kleine Pause einlegen. Ich danke dir für den Hinweis David.

Viele Grüße

webbies
webbies ist offline   Mit Zitat antworten
Alt 26.07.2008, 13:10  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von webbies Beitrag anzeigen
Also ich heute morgen wach wurde ist mir die Lösung auch sofort eingefallen, vielleicht kennt ja jemand dieses Gefühl Manchmal sollte man wohl eine kleine Pause einlegen.
Deine Worte in Gottes Ohr...
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."
tomtaz ist offline   Mit Zitat antworten
Antwort


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 an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
php Blätterfunktion erweitern killerboost PHP Tipps 2007 5 16.08.2007 08:46
Apache um Funktionalität erweitern Plague Server, Hosting und Workstations 5 14.08.2007 15:30
Queries dynamisch um Tabellen Präfixe erweitern Basti Datenbanken 3 15.05.2006 16:32
einfaches galleryscript erweitern PHP Tipps 2006 16 22.02.2006 11:15
SELECT um eine Bedingung erweitern ?! Datenbanken 2 22.10.2005 10:09
[DOM] Node um ein Child erweitern ??? HStev PHP Tipps 2005-2 1 04.07.2005 18:11
[Erledigt] Dynamisches Menü erweitern?? PHP Tipps 2005 1 19.03.2005 14:41
News Script erweitern ? PHP Tipps 2005 6 18.02.2005 17:51
PHP Reffer Script erweitern? Kori PHP Tipps 2005 8 17.02.2005 16:07
[Erledigt] textarea mittel PHP erweitern? PHP-Fortgeschrittene 10 09.02.2005 17:04
Suchfunktion erweitern, aber WIE??? Hilfe! PHP Tipps 2004-2 7 30.11.2004 07:59
Tabelle erweitern, Spalten hinzufügen GeorgM Datenbanken 3 24.11.2004 17:06
DOM-Klasse erweitern? Quadaptor PHP-Fortgeschrittene 8 23.10.2004 01:33
Mit php eine bestehende html-tabelle erweitern PHP Tipps 2004 1 12.07.2004 08:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
pdo mysql extends config, extend pdostatement, pdostatement, extends pdostatement, pdo erweitern, invalid parameter number: no parameters were bound, pdo statement, extends pdo, pdostatement erweitern, attr_emulate_prepares, extending pdostatement, pdo extends, php extend pdostatement, php pdo erweitern, php extends pdo, php extends pdostatement, pdostatement extend, php pdo pdostatement tabelle, extending pdo, extend pdo statement

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:32 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum