Unterschiede in PHP Varianten

Hier lacht keiner. Anfänger waren wir alle irgendwann mal :)

Die Methode setzBerechtigung() ist Teil der Klasse User. Wenn du ein Objekt aus der Klasse User erzeugst und anschließend die Methode aufrufen willst, musst du die Methode über das Objekt aufrufen. Z.B. so:

PHP:
$user->setzBerechtigung('unreg');

Das kommt daher, das man mehrere Objekte der Klasse User erzeugen könnte. Damit PHP weiß, von welchem Objekt die Methode aufgerufen werden soll, muss man das Objekt vorn anstellen. Z.B. kann es auch so aussehen:

PHP:
$Godstyle = new User();
$saftmeister = new User();

$Godstyle->setzBerechtigung('admin');
$saftmeister->setzBerechtigung('benutzer');
 
ich habe wie beschrieben lediglich kleine ausschnitte verwendet um die sachlage zu verdeutlichen, ich bin nichtmal sicher ob die scripte die ich hier eingesetzt habe überhaupt so funktionieren was aber auch für die frage wie ich denke unwesentlich ist ;)

Mit OOP und Klassen beschäftige ich mich grade auch wenn ich schon an meinem ersten wirklich kleinen script am verzweifeln bin und seid 2 std in 12 zeilen den Fehler nicht finde ;)

Nun denn...ich sagte es ja nur, ich sehe in einem anderen Forum zu 95% nur Unsinn, welcher Blind Kopiert und ohne einen Gedanken zu verschwenden wieder eingesetzt wird, zum Schluss kommt dann sowas wie diese Tags bei raus: "<?=" oder "<?" oder solche Querys:

PHP:
$timer=mysql_query("SELECT ".strtolower($kampdatas2[8])." FROM affili2_".strtolower($_GET['art'])." WHERE id='$kampdatas2[2]'");
$timer=mysql_fetch_row($timer);

Da läuft es mit Eiskalt den Rücken runter....und wieder hoch, wenn ich sowas sehe. Aber das beste daran ist: Diese Query stammt aus einem Script, was für 450 Euro verkauft wird...und die Leute kaufen es sogar :D
 
Hmm, den Quelltext aus dem Kontext zu reißen gestattet kein Urteil. Es könnte genauso gut sein, das $_GET an anderer Stelle entschärft wird.

Allerdings muss ich in sofern recht geben, das es mit Prepared Statements wesentlich eleganter wäre - in jeder Hinsicht.
 
Ich würde mich auch nochmal gerne einschalten.
Ich hab jetzt verstanden, wie man mit prepared statements eine Query absetzt, allerdings werde ich aus folgendem Absatz nicht wirklich schlau:
sheel hat gesagt.:
Bei den Prep.Statements macht man einmal ein prepare mit ? im Query
und kann dann mit bind_param Werte "einsetzen" und das Ganze mit execute ausführen.

Der Sinn dahinter: Für eine prepare-te Anweisung kann man beliebig viele binds/executes
machen; die DB spart sich dabei die erneute Verarbeitung der Anweisung selbst.
Im Vergleich zu mehreren kompletten inserts/selects/... ist das daher um einiges schneller.

Heißt das soviel wie folgendes:
PHP:
$log_data = 'INSERT INTO tabelle (name,value1,value2) VALUES (?,?,?)'; 
$stmtt = $db2->prepare($log_data); 

$stmtt->bind_param('sss', $username, $value1, $value2); 
$stmtt->execute();

$stmtt->bind_param('sss', $username2, $value12, $value22); 
$stmtt->execute();
?
Also man kann einfach dieselbe Query mit anderen Variablen neu ausführen?

Noch eine Frage: bei bind_param('sssssiss',$value, ...); dieses sssssssis ... was bedeutet das? nur s wären mir klar, aber was macht das i darin?
Edit: Wenn man mal logisch drüber nachdenkt: s=string, i=int :D

lg Lime
 
Ja, dass das vor allem bei Schleifen super ist, ist mir jetzt schon klar. ^^
Also wird erst das Statement an den SQL-Server geschickt - der speichert es und anschließend werden nur noch die Werte geschickt, die dann der SQL-Server selbst einsetzt? Minimiert den Traffic natürlich enorm, das ist wohl klar.

Danke für die Auskunft.

lg, Lime
 
Ist es zwingend notwendig, die Typen zu maskieren? Oder kann man theoretisch einfach alle als String definieren?
 

Neue Beiträge

Zurück