MySQL-Befehle in PHP

Alice

Erfahrenes Mitglied
Hallo Leute. :)

Ich würde gerne wissen ob dieses Beispielcode so okey wäre.

PHP:
<?php
   $Tuner_ASP     = 'Max Mustermann';
   $Tuner_Name    = 'Maximal Power';
   $Tuner_Adresse = 'Musterstraße 5';
   $Tuner_PLZ     = '12345';
   $Tuner_Ort     = 'Entenhausen';

   mysql_connect("Host", "User","Passwort") or die ("Internal Error 1");
   mysql_select_db("DB-Name") or die ("Internal Error 2");
   mysql_query("INSERT INTO Tuner (Tuner_Asprechpartner, Tuner_Name, Tuner_Adresse, Tuner_PLZ, Tuner_Ort) VALUES ('$Tuner_ASP', '$Tuner_Name', '$Tuner_Adresse', '$Tuner_PLZ', '$Tuner_Ort')");
   mysql_close();
?>

Die Variablen werden nicht direkt eingetragen (von POST oder GET) und werden natürlich trotzdem mit "mysql_real_escape_string" entschärft.

Der Code funktioniert ja so schon einmal und es werden auch keine Fehlermeldung angezeigt.

Aber ich schaue mir immer gerne Beispiele von php.net und schattenbaum.net an und die machen das anders.

Die schreiben dort z.B. immer eine Variable vor den Befehl. Muss das sein? Denn ich finde das so wie bei mir übersichtlicher.

PHP:
$in_db_schreiben = mysql_query("INSERT INTO Tuner (Tuner_Asprechpartner, Tuner_Name, Tuner_Adresse, Tuner_PLZ, Tuner_Ort) VALUES ('$Tuner_ASP', '$Tuner_Name', '$Tuner_Adresse', '$Tuner_PLZ', '$Tuner_Ort')");

Es wäre ja okey wenn man vor allen Befehlen eine Variable einfügen könnte aber das geht z.B. warum auch immer nicht.

PHP:
$db_name = mysql_select_db("DB-Name") or die ("Internal Error 2");
 
Hi,

wie in jeder Programmiersprache haben in PHP manche Funktionen einen Rückgabe-Wert oder nicht.

Wenn ja, so kannst du diesen in einer Variable speichern, bringt aber nur dann was wenn du auch was damit machen willst!
Was der Rückgabe-Wert ist, musst du halt nachschauen, z.B.:

mysql_connect:
Gibt eine MySQL Verbindungs-Kennung im Erfolgsfall zurück oder Im Fehlerfall wird FALSE zurückgegeben..

Aber musst du denn mysql_select_db nicht so machen?
PHP:
$dbc = mysql_connect("Host", "User", "Passwort");
mysql_select_db("DB-Name", $dbc);
 
Wenn nur eine Verbindung zur Laufzeit besteht, dann braucht er die Verbindungskennung nicht mit angeben. Wenn mehr als eine Verbindung genutzt wird, dann sollte die Verbindungskennung immer angegeben werden da sonst immer die zu letzt geöffnete Verbindung genutzt wird.

Gruß
 
Wenn nur eine Verbindung zur Laufzeit besteht, dann braucht er die Verbindungskennung nicht mit angeben. Wenn mehr als eine Verbindung genutzt wird, dann sollte die Verbindungskennung immer angegeben werden da sonst immer die zu letzt geöffnete Verbindung genutzt wird.

Gruß

Hallo.

Verstehe ich jetzt nicht wirklich. Die Datenbank die ich benutze ist die Datenbank von meiner Webseite und von meinem vBulletin Forum.

Ich habe eben die Verbindungsdaten im Skript auskommentiert aber die Daten werden trotzdem in der Datenbank gespeichert.
 
Mein Text war eine Antwort auf den Post von javaDeveloper2011.

Wenn Du die Verbindungsdaten auskommentiert hast und das Skript die Datenbank noch verwenden kann, dann werden die Verbindungsdaten wohl noch an anderer Stelle stehen.

Gruß
 
Ja klar! Aber das kann doch nicht sein?

Die Verbindungsdaten stehen in der Config.php (wie in diesem Forum zu 99,99% auch) aber was hat das mit meinem Skript zutun? Woher weiss das Skript wo die Daten sind?

Denn wie an einer anderen Stelle erwähnt, nutze ich nicht die "vBulletin MySQL Befehle" sondern die einfachen Standard Befehle.

So ein vBulletin-Befehl sieht so aus:
PHP:
$userdata->set_existing($vbulletin->userinfo);
 
Dann wird das vBulletin wahrscheinlich mit einer persistenten Verbindung arbeiten welche PHP bei der Benutzung von den MySQL-Befehlen in deinem Skript benutzt. (wobei ich mir damit nicht sicher bin!)

Gruß

//EDIT
Es ist völlig irrelevant welche Befehle Du benutzt. Ist eine MySQL-Verbindung vorhanden und Du gibst bei deinen Befehlen keine Verbindungskennung mit, dann nimmt er die zu letzt geöffnete Verbindung.
 
Zuletzt bearbeitet:
Also wäre es besser wenn ich die Verbidungsdaten (sicher ist sicher) mitgebe?

Was wäre denn besser?

PHP:
   mysql_connect("Host", "User","Passwort") or die ("Internal Error 1");
   mysql_select_db("DB-Name") or die ("Internal Error 2");

oder

PHP:
   $db = mysql_connect("Host", "User","Passwort") or die ("Internal Error 1");
   mysql_select_db("DB-Name", $db) or die ("Internal Error 2");
 
So wäre es sicher besser:
PHP:
$db = mysql_connect( 'Host', 'User', 'Passwort' ) or die (
    'Error: ' . mysql_errno() . ' - ' . mysql_error()
);

mysql_select_db( 'DB-Name', $db ) or die (
    'Error: ' . mysql_errno( $db ) . ' - ' . mysql_error( $db )
);

Gruß
 
Und was macht der Code genau? Also nach "or die"?

Wäre es evtl. nicht vom Vorteil wenn der User den DB-Fehler nicht sieht?
 
Zurück