[Fragen] Klassentutorial von Tutorials.de

  • Themenstarter Themenstarter ByeBye 8492
  • Beginndatum Beginndatum
B

ByeBye 8492

Moinsen,

hätte ne Frage zu dem MySQL Klassentutorial ( wenn sich das denn Tutorial nennen darf .... :rolleyes: ).
http://www.tutorials.de/tutorials21208.html
Also ersten ist es recht schlecht erklärt, sonst hätte ich mir wohl die Frage ersparen können aber egal :).

So die Frage bezieht sich erstmal auf
PHP:
function query( $query ) {
        $this->query_id = @mysql_query( $query, $this->link_id );
        $this->query_c++;
        if ( !$this->query_id ) {
            $this->error("Invalid SQL: \"<i>$query</i>\"");
        }
        $this->a_rows = @mysql_affected_rows($this->query_id);
        return $this->query_id;
      }

Habe meine eigene Klasse geschrieben wollte sie aber hiermit abgleichen und diese Klasse ist irgendwie ungleich komplexer und
komplizierter, selbst im Connect und überall ....

Also erstmal die Frage

1. Wofür brauche ich einen query_id

Wieso wird diese Query_ID auch wieder returned?
Was bedeutet das @ vor dem mysql_query?

2. Wieso sollte in dem Mysql Query die Linkid mitangebeben werden? Ist die nicht unerheblich?


Habe gerade mit Klassen angefangen und wollte mir dann mal noch weitere Fähigkeiten mit diesem "Tutorial" aneignen ...
hat nicht ganz geklappt :D ;).

Aso und dann hätte ich noch ne Allgemeine Klassenfrage:

Immer wenn ich eine Variable einen Wert zu einer Funktion zurordnen will, die innerhalb der Klasse liegt muss ich $this -> variable = blabla benutzen oder?
und genau so muss ich dann wohl auch überprüfen ob die Variable wahr oder Falsch ist oder?
 
Warum kriege ich eigentlich immer

function query($query){
$this -> query_id = @mysql_query($query, $this->link_id);
$this -> query_count++;
echo $this -> query_id;
if(! $this->query_id) {
echo "Dieser Query ist nicht zulässig <i>$query</i>";
}
echo $this -> query_id;
$this -> aff_rows = @mysql_affected_rows($this->query_id);
return $this -> query_id;
}


Hier die Fehlerausgabe angesagt?


$db = &new mysql;
$db -> user = 'root';
$db -> pass = '';
$db -> server = 'localhost';
$db -> datenbank = 'counter';

$db -> connect();
$db -> query("SELECT name as Name from benutzer");
 
1.) Die Query-ID (das result) brauchst du, um auf das Ergebnis des Queries zugreifen zu können.

2.) Das @-Zeichen vor mysql_query() bedeutet, dass eventuelle Fehlermeldungen unterdrückt werden.

3.) Die Link-ID benötigst du, wenn du mehrere Datenbankverbindungen zugleich geöffnet hast.
Immer wenn ich eine Variable einen Wert zu einer Funktion zurordnen will, die innerhalb der Klasse liegt muss ich $this -> variable = blabla benutzen oder?
Richtig. Variablen, die nur innerhalb einer Funktion existieren (und nach Aufruf nicht mehr vorhanden sein müssen) brauchst du nicht mit $this->varname aufrufen/definieren.

mfg
split
 
Zuletzt bearbeitet:
Original geschrieben von split
1.) Die Query-ID (das result) brauchst du, um auf das Ergebnis des Queries zugreifen zu können.

Aber wieso wird denn ein Query über einen numerischen Wert(Query_id) übertragen und warum sagt er mir immer der Query ist ungültig, obwohl er in PHPMYAdmin geht?
 
Original geschrieben von Muffinmampfer
Aber wieso wird denn ein Query über einen numerischen Wert(Query_id) übertragen und warum sagt er mir immer der Query ist ungültig, obwohl er in PHPMYAdmin geht?
Hat irgendwer behauptet, dass query_id numerischer Natur ist? Die Funktion mysql_query liefert nunmal einen "Zeiger" auf eine Resource zurück und just diesen braucht man um das Ergebnis der Abfrage weiterverarbeiten zu können.
 
Original geschrieben von Tim Comanns
Hat irgendwer behauptet, dass query_id numerischer Natur ist? Die Funktion mysql_query liefert nunmal einen "Zeiger" auf eine Resource zurück und just diesen braucht man um das Ergebnis der Abfrage weiterverarbeiten zu können.

Ich behaupte das :-), denn oben in der Definition der Variablen steht ja drinne query_id = 0;
daraus schliesse ich das er numerisch ist .... :)
 
Original geschrieben von Muffinmampfer
Ich behaupte das :-), denn oben in der Definition der Variablen steht ja drinne query_id = 0;
daraus schliesse ich das er numerisch ist .... :)

[X] Du hast keine Ahnung vom TypeCasting in PHP.
Die Query_Id ist eine Ressource, wird allerdings erstmal auf 0 (= false) gesetzt, da nunmal kein Zeiger existiert.
Die haelfte deiner Fragen haette sich mit einem Blick in die PHP-Dokumentation geklaert.
Eventuell solltest du deine, mit sicherheit gut gemeinte, Kritik an den Autor (mich) richten, damit ich dir dieses nicht-Tutorial naeherbringen kann.
Desweiteren wuerde ich dir RTFM, UTFSE und STFW empfehlen.

PS: Was mir eben noch auffaellt, wenn man so viel Ahnung von PHP hat wie du, sollte man mit Kritik lieber vorsichtig sein und sich nicht allzusehr im Ton vergreifen.
 
Original geschrieben von Johannes Röttger
[X] Du hast keine Ahnung vom TypeCasting in PHP.
Die Query_Id ist eine Ressource, wird allerdings erstmal auf 0 (= false) gesetzt, da nunmal kein Zeiger existiert.
Die haelfte deiner Fragen haette sich mit einem Blick in die PHP-Dokumentation geklaert.
Eventuell solltest du deine, mit sicherheit gut gemeinte, Kritik an den Autor (mich) richten, damit ich dir dieses nicht-Tutorial naeherbringen kann.
Desweiteren wuerde ich dir RTFM, UTFSE und STFW empfehlen.

PS: Was mir eben noch auffaellt, wenn man so viel Ahnung von PHP hat wie du, sollte man mit Kritik lieber vorsichtig sein und sich nicht allzusehr im Ton vergreifen.

Vom TypeCasting habe ich keine Ahnung stimmt :-) , habe ich auch nie behauptet.

Warum mache ich wohl ein Tutorial? Weil ich das alles schon kann, oder weil ich es lernen will .... ? Dreimal darfst du raten ;) :).

Wieso wird denn eigentlich bei den fetch_array sachen die Query_id immer = -1 gesetzt, in der Klasse die ich mir geschrieben habe, brauchte ich das nicht und es hat immer noch funktioniert :), ist das irgendeine "Sicherheitsfunktion"?

Was soll eigentlich UTFSE und STFW heissen?
 
Grml, fuer die Frage nach UTFSE und STFW sollte ich dir die beiden Worte nochmal an den Kopf werfen:

UTFSE = use the fucking search engine
STFW = search the fucking web

Wenn man keinen Parameter an die fetch_array-Funtion uebergibt verwendet sie die Ressource die im Attribut query_id steht.
Vom TypeCasting hat man eigentlich sofort Ahnung, wenn man sich die Zeit nimmt und kurz ueber die Art und Weise der Variablendeklaration und -verwendung in PHP nachdenkt.
 
Zurück