php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.05.2006, 19:46  
Erfahrener Benutzer
 
Registriert seit: 03.01.2006
Beiträge: 253
CC84
Standard mysqli als Objekt

Seh ich das gerade falsch oder ist die Verwendung von mysqli als Objekt bei weitem nicht so vorteilhaft, wie sie sein könnte?

Viele Funktionen sind doch wieder nur als mysqli_ Funktionsname verfügbar.

Bis gerade dachte ich, dass die mysqli_ Aufrufe nur als Aliase dienen, um alte Scripte leichter anzupassen. Aber offenbar täusche ich mich da.

Finde ich sehr schade.

Bitte korrigiert mich, wenn ich falsch liege, aber ein Aufruf mit:

print_r( get_class_methods($this->conn)); ($this->conn ist ne mysqli Instanz)
bringt 45 Ergebnisse, aber Sachen wie mysqli_error() ist nicht dabei.
CC84 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 08.05.2006, 19:49  
Gast
 
Beiträge: n/a
Standard Re: mysqli als Objekt

Zitat:
Zitat von CC84
bringt 45 Ergebnisse, aber Sachen wie mysqli_error() ist nicht dabei.
Vielleicht solltest Du mal ein get_class_vars() hinterherschieben...
  Mit Zitat antworten
Alt 08.05.2006, 20:07  
Erfahrener Benutzer
 
Registriert seit: 03.01.2006
Beiträge: 253
CC84
Standard Re: mysqli als Objekt

Zitat:
Zitat von karl-150
Zitat:
Zitat von CC84
bringt 45 Ergebnisse, aber Sachen wie mysqli_error() ist nicht dabei.
Vielleicht solltest Du mal ein get_class_vars() hinterherschieben...
Gute IDee, aber geht leider nicht. Und ich bin völlig überfragt warum.

Also

folgender Code:

$bla = new mysqli('localhost','user','pw','db');
print_r(get_object_vars($bla));

Dabei bekomme ich ein array()

$bla = new mysqli('localhost','user','pw','db');
print_r(get_class_vars($bla));

Fehler, erwartet als 1. Parameter String (Ok in die Doku geschaut, darf eigentlich auch gar nicht gehen, warums bei methods ging ka.)

$bla = new mysqli('localhost','user','pw','db');
print_r(get_class_vars('mysqli'));

Dabei bekomme ich wieder ein array()

Also entweder stimmt gerade bei mir was nicht, oder aber das will mir sagen, es gibt keine Public Vars.

(finde es eh seltsam, dass ich Werte die ich auslesen soll, als Variable ansprechen soll, widerspricht in meinen Augen der Blackbox einer Klasse.)
CC84 ist offline   Mit Zitat antworten
Alt 08.05.2006, 20:13  
Gast
 
Beiträge: n/a
Standard

Welche PHP Version?
  Mit Zitat antworten
Alt 08.05.2006, 20:18  
Erfahrener Benutzer
 
Registriert seit: 03.01.2006
Beiträge: 253
CC84
Standard

Zitat:
Zitat von ignatz
Welche PHP Version?
php 5.1.2

Habe bisschen weiter gesucht.

$bla = @new mysqli('localhost','user','pw','db');

echo $bla->errorno;

Das sollte gehen. ABER dabei werden die Connectionerrors nicht berücksichigt.
(Ich vemute, dass hier ne __GET arbeitet, die natürlich nicht über get_class_vars abzufragen ist)


Was mir nun also fehlt wäre wie ich feststelle, ob die DBconn zustande gekommen ist.

Denn new liefert immer ein Object. Ne Abfrage auf false ist also sinnfrei. Und ein Synonym zu mysqli_connect_errno finde ich nicht.
CC84 ist offline   Mit Zitat antworten
Alt 08.05.2006, 21:02  
Gast
 
Beiträge: n/a
Standard

Zitat:
Bis gerade dachte ich, dass die mysqli_ Aufrufe nur als Aliase dienen, um alte Scripte leichter anzupassen. Aber offenbar täusche ich mich da.
Es ist fast eher andersherum
Wenn Du ein mysqli Objekt erstellst, wird ein Eintrag für ein Objekt erstellt. Als Konstruktormethode wird "allerdings"
Code:
f.handler = ZEND_FN(mysqli_connect);
gesetzt. Das ist genau die selbe Methode/Funktion, die auch per
Code:
$link = mysqli_connect(....)
aufgerufen wird.

Fehler während des Verbindungsaufbaus werden per
Code:
PHP_FUNCTION(mysqli_connect_errno)
{
	RETURN_LONG(MyG(error_no));
}
ermittelt.
Irgendeine Zuordnung MyG(error_no) <-> Objekt habe ich allerdings nicht gefunden.
Kannst Du ja mal bei php.net vorschlagen.
Oder die Möglichkeit, exceptions werfen zu lassen - fände ich auch ganz schick.
  Mit Zitat antworten
Alt 08.05.2006, 21:17  
Erfahrener Benutzer
 
Registriert seit: 03.01.2006
Beiträge: 253
CC84
Standard

php tut sich nach wie vor schwer was die Klassen angeht. Zwar kann der User das mittlerweile sehr ordentlich programmieren. Aber wenn man auf php Funktionen angewiesen ist, heisst es sehr oft da doch wieder zu basteln. Ich hoffe mal, dass das mit php6 endlich besser wird.

php5 wirft nur in ganz wenigen Situationen Exceptions von sich.

Aber danke, dann werde ich wohl doch wieder auf ne prozedurale mysql zurückfallen müssen.

Schade.
CC84 ist offline   Mit Zitat antworten
Alt 09.05.2006, 11:05  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von CC84
Zitat:
Zitat von ignatz
Welche PHP Version?
php 5.1.2

Was mir nun also fehlt wäre wie ich feststelle, ob die DBconn zustande gekommen ist.
Im Handbuch steht ein Beispiel:
Code:
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */ 
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

printf("Host information: %s\n", $mysqli->host_info);

/* close connection */
$mysqli->close();
?>
  Mit Zitat antworten
Alt 09.05.2006, 11:10  
Gast
 
Beiträge: n/a
Standard

Ja, aber das ist eben nicht wie gewünscht an das Objekt gebunden.
  Mit Zitat antworten
Alt 09.05.2006, 11:20  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Bruchpilot
Ja, aber das ist eben nicht wie gewünscht an das Objekt gebunden.
Wenn es keinen Connect gibt, ist das Objekt wertlos.
  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
Objekt im GET-Query wird nicht übertragen Ralpho PHP-Fortgeschrittene 10 05.05.2008 10:03
Krieg kein Objekt zurück auf includeter Seite NONNNNN PHP Tipps 2008 5 28.03.2008 19:25
Objekt als ComboBox behandeln Nalincah PHP Tipps 2008 2 08.11.2007 03:52
Klassensammlung über ein Objekt zur Verfügung stellen ecomeback PHP Tipps 2007 7 14.07.2007 00:01
Geltungsbereich mysqli Objekt R4v3r PHP Tipps 2007 12 28.03.2007 22:01
PHP5 -> MySQLi erben snatch-ic PHP Tipps 2007 1 08.02.2007 18:05
Objekt wird auf einem Server akzptiert auf anderem nicht nieselfriem PHP Tipps 2006 3 10.07.2006 01:46
Zugriff auf verschachteltes Objekt aus Funktion FloMX PHP-Fortgeschrittene 10 28.03.2006 17:01
Objekt in Session übergeben jacos PHP Tipps 2006 2 21.02.2006 00:11
[Erledigt] PHP5 OOP Zugriff aus einem Objekt auf ein externes Objekt PHP Tipps 2006 5 28.01.2006 16:05
Objekt übergeben Fatal Error PHP Tipps 2007 5 28.12.2005 14:43
MySQL vs. MySQLi Shade PHP Tipps 2007 4 05.11.2005 15:22
Objekt in Array ablegen PHP-Fortgeschrittene 9 18.08.2005 14:35
kann sich ein Objekt selbst serialisieren? ajo_silent PHP Tipps 2005-2 24 27.06.2005 09:13
Kein mysqli Objekt möglich?! Datenbanken 8 09.06.2005 18:17

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysqli ansprechen, mysqli als objekt übergeben, mysqli objekt über funktion, print_r mysqli, mysqli get objetzt, php mysqli ergebnis als objekt, mysqli php result object print_r, get_class_vars object __get, mysqli connection allen klassen zur verfügung stellen, mysqli connection übergeben php, php mehrere mysqli isntanzen, get_class_vars mysqli

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:16 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.