Verbindung zu MySql global in config
Mark
- datenbank
Hallo,
traue mich heut das erste mal an MySql und habe da auch schon meine erste Frage...
Habe ein Gästebuch erstellt wobei bei einem Script die Beiträge gelöscht, gesperrt oder freigegeben werden können, ebenso werden auch die gesamten Beiträge angezeigt. Also 4* wird in einem Script auf die Datenbank zugegriffen (real 2*, denn entweder löschen, freigeben oder sperren und jeweils alle anzeigen dazu)
In meinem schlauen Buch werden bei jeder der o.g. Aktionen jeweils eine neue Verbindung aufgebaut und die sieht immer gleich aus.
kann ich denn dieses auch einmalig auslagern und die ganze Aktion nur einmal am Anfang mit include("config.php") aufrufen oder hat es dann Nachteile?
also folgendes sollte dann in der config.php stehen:
$tabellenname="gaestebuch";
$sqllogin=mysql_connect("localhost","root","");
mysql_select_db("auch_gaestebuch",$sqllogin);
geht oder geht nicht, was ist denn zu empfehlen?
Gruss, Mark
Hallo Mark,
kann ich denn dieses auch einmalig auslagern und die ganze Aktion nur einmal am Anfang mit include("config.php") aufrufen oder hat es dann Nachteile?
also folgendes sollte dann in der config.php stehen:
$tabellenname="gaestebuch";
$sqllogin=mysql_connect("localhost","root","");
mysql_select_db("auch_gaestebuch",$sqllogin);
Klar geht das so oder so ähnlich. Die "connect.inc.php" (oder wie Du sie eben nennst, würd ich dann ins Standard-Include-Verzeichnis packen, außerhalb der Document-Root (INCLUDE_PATH).
Und außerdem würde ich auf jeden Fall bei der MySQL-DB einen eigenen User MIT Passwort für diese Sache einrichten.
Die Tabelle brauchst Du nicht in der connect.inc.php zu wählen; das macht man später besser beim SQL-Statement.
<? php #### connect.inc.php ####
$user = "GB_User";
$password = "genühgendLangunTmitt3zaal12";
## und nicht aus dem Wörterbuch!
$con = mysql_connect("localhost",$user,$password);
$db = mysql_select_db("auch_gaestebuch",$con);
if (!$con) die("Datenbank-Server nicht erreichbar");
if (!$db) die("Datenbank-Verbindung gescheitert");
define("_CON",$con); ## hab ich noch nicht ausprobiert.
define("_DB",$db); ## bitte um Rückmeldung
?>
Grüße
Tom
Danke Tom
... und einen schönen abend noch,
Gruss Mark
Hello Mark,
funktioniert das mit der Kontanten-Definition? Das habe ich immer mal bei mir einbauen wollen, aber bisher nicht gemacht.
Grüße
Tom
Hallo Tom,
funktioniert das mit der Kontanten-Definition? Das habe ich immer mal bei mir einbauen wollen, aber bisher nicht gemacht.
ja, es funktioniert, ich habe sowas bei mir auch schon gemacht - mysql_query() "frisst" auch Konstanten als Verbindungs-Kennung.
Grüße aus Nürnberg
Tobias
Hallo Tom,
funktioniert das mit der Kontanten-Definition? Das habe ich immer mal bei mir einbauen wollen, aber bisher nicht gemacht.
..Ich habe es so wie von Dir vorgegeben umgesetzt und es funktioniert einwandfrei.
Verstehe nur noch nicht wozu die Konstanten da sind.
gebe ich die als echo aus, erhalte ich bei _CON:Resource id #2
und bei _DB:1
????
Hello,
Verstehe nur noch nicht wozu die Konstanten da sind.
gebe ich die als echo aus, erhalte ich bei _CON:Resource id #2
und bei _DB:1
Das ist in Ordnung so.
Die sind nur für internen Gebrauch des Scriptes gedacht.
Bei jedem Query
$res = mysql_query($sql,_CON);
kann man die Connection-ID mitgeben. Wenn man nur mit einer einzigen Datenbanksewrver-Verbindung arbeitet, dann sucht sich PHP dieses Handle auch selber. Wenn man aber zum Beispiel mit Hilfe eines Scriptes Daten von einer Datenbank in eine andere transferieren will, dann muss man die Connection angeben, da PHP sonst ja nicht wissen kann, von wwelcher DB zu welcher DB gearbeitet werden soll.
Ich habe mir angewöhnt, die Connection immer anzugeben. Ist auch ein klein bisschen schneller, als wenn PHP die selber bestimmen muss.
Die Datenbank-ID braucht man eigentlich nicht, da unter der Connection auch der Tabelleneitrag für die aktive DB besteht. Ich habe sie nur der Vollständigkeit halber mit aufgenommen.
Man weiß ja nie...
Hast Du einen eigenen User für die Zugriffe angelegt? Der sollte selber keine GRANT OPTION haben und besser auch kein DROP TABLE und kein ALTER TABLE ausführen können.
Grüße
Tom
Hallo,
Danke, so ansatzweise kann ich folgen. Ist ja alles "noch" Neuland.
Hast Du einen eigenen User für die Zugriffe angelegt? Der sollte selber keine GRANT OPTION haben und besser auch kein DROP TABLE und kein ALTER TABLE ausführen können.
Im Moment teste ich nur local, ausser mir sollte da keiner was machen. Wenn's mal fertig ist und online gehen sollte (mag keine Gästebücher aber zum Üben ist es O.K.), richte ich das dann entsprechend mit Einschränkungen ein, ...gilt auch für weitere Vorhaben.
cu
P.S.: Pass ist selbstredend nix aus'm Wörterbuch ;)
...ups: Und natürlich noch Danke