|
 |
|
| Autor |
Nachricht |
Kristallprinz Neuer [User]

Anmeldung: 03.10.08 Beiträge: 5 Wohnort: Rees
|
Verfasst am: 03.10.2008, 04:09 Titel: Verwirrende Zeichensetzungen im PHP-Script |
|
|
Hallo, als sogenannter Neuling fummel ich grad selber an einem Paidmail-Script und so hundertprozentig hab ich hier keine Antwort gefunden.
Das heißt ich hab`s gekauft und es funktioniert nicht richtig.Da ich zwar Hilfe des Verkäufers bekomme, nur allerdings meldet sich der Ersteller des Scripts nicht, komme ich nicht weiter.
Jetzt versuch ich mich selbst dran und hätt erstmal was geklärt:
$db = mysql_connect("$dbhost","$mysqlusername","$mysqlkennwort");
Die Bedeutungen sind schon klar, nur verwirrt es das dieser Satz in mehreren PHP-Seiten unterschiedlich geschrieben ist! Mal sind die Begriffe wie oben in der Klammerung mit Anführungszeichen - mal ohne oder nicht alle mit/ohne Zeichen geschrieben worden.
Was ist jetzt richtig?
Auch steht statt $dbhost manchmal localhost im Satz, auch mal mit - mal ohne die Anführungszeichen. Da das Script bei mir auf einem Server liegt, ist mir schon gesagt worden es auf localhost einzurichten - nur halt hier wieder die Frage wegen den Anführungszeichen?
Und die Bezeichnung $db wird auch wechselweise vorangestellt - sprich der obige Satz taucht mal mit - mal ohne $db auf. Wobei in zwei oder drei PHP-Dateien am Ende der Seite auch
mysql_close($db)
eingetragen ist. Hat aber keine Zuweisung in der config.php bzw. ist dort überhaupt nicht aufgeführt.
Was hat es denn damit auf sich?
Gruß Thomas
|
|
| Nach oben |
|
 |
JFM Beliebter [User]


Anmeldung: 25.09.05 Beiträge: 425 Wohnort: Gütersloh
|
Verfasst am: 03.10.2008, 10:43 Titel: |
|
|
Wenn der ganze Befehl in einer Variable gespeichert wird, währe es möglich diesen Befehl an einer anderen Stelle im Script erneut auszuführen.
In deinem Fall um die Verbindung wieder zu beenden
Spart schreibarbeit.
Die Anführungszeichen sind glaube ich irrelevant. Richtig ist es aber mE. mit. _________________
http://www.onestripe.de
|
|
| Nach oben |
|
 |
Kristallprinz Neuer [User]

Anmeldung: 03.10.08 Beiträge: 5 Wohnort: Rees
|
Verfasst am: 03.10.2008, 14:22 Titel: |
|
|
Also erstmal Danke JFM,
also hab ich das so zu verstehen das nach jedem öffnen der DB der Schließungscode am Ende stehen muss?!
Aber immer noch nicht warum mal mit "$db=mysql..." am Anfang mal ohne "mysql..." der Satz geschrieben steht! Wobei beim letzteren sich die Frage stellt ob der DB Schließungscode wieder eingetragen wird?
Weiter auch warum in der config.php keine Zuweisung aufgeführt ist? Sprich dort stehen ja alle Zuweisungen für $dbname $dbuser usw. aber nicht für $db!!
|
|
| Nach oben |
|
 |
JFM Beliebter [User]


Anmeldung: 25.09.05 Beiträge: 425 Wohnort: Gütersloh
|
Verfasst am: 03.10.2008, 14:37 Titel: |
|
|
| Code: | | $db = mysql_connect("$dbhost","$mysqlusername","$mysqlkennwort"); |
Das sagt ja nichts anderes aus, als das in der Variable $db der gesamte code zum Aufbau einer Verbindung zur DB erzeugt wird. Der Code selber wird an der stelle allerdings noch nicht ausgeführt.
Später wird dieser Code dann in die mysql_close() eingefügt.
Die config.php wird bei dem Script wohl alle Variablen enthalten die häufiger/in mehreren .php-Dateien gebraucht werden. Damit kann man diese dann leichter ändern, zB. wenn das Script auf einerm anderen Server angewendet werden soll oder einfach nur eine andere Datenbank verwendet wird.
Theoretisch kann man diese Variablen auch alle direkt in jeder .php-Datei setzen. Dann hätte man halt nur viel Aufwand beim ändern, wenn einer der oben genannten Fälle eintreten sollte.
| Zitat: | | Aber immer noch nicht warum mal mit "$db=mysql..." am Anfang mal ohne "mysql..." der Satz geschrieben steht! | Da verstehe ich jetzt nicht so genau worauf du hinaus willst. [/code] _________________
http://www.onestripe.de
|
|
| Nach oben |
|
 |
Kristallprinz Neuer [User]

Anmeldung: 03.10.08 Beiträge: 5 Wohnort: Rees
|
Verfasst am: 03.10.2008, 20:56 Titel: |
|
|
Also mal dann etwas genauer.
(Lassen wir mal außer acht ob nun $dbhost oder localhost.)
Zum einen ist der Code in den meisten Dateien so eingeschrieben:
mysql_connect("$dbhost","$mysqlusername","$mysqlkennwort");
und in - glaub ca.5 - Dateien so:
$db = mysql_connect("$dbhost","$mysqlusername","$mysqlkennwort");
wobei nicht alle - nur 2 o. 3 - den Schließungscode
mysql_close($db)
am Ende haben.
Na schauen wa mal - teste jetzt mal alle drei Varianten der PHP-Dateien.
|
|
| Nach oben |
|
 |
benjam4 Bekannter [Mod]


Anmeldung: 17.05.06 Beiträge: 1320 Wohnort: Ostfildern ...
|
Verfasst am: 03.10.2008, 21:08 Titel: |
|
|
Die gehen alle.
Beim ersten besteht dann nur nicht mehr die möglichkeit, die Datenbank mit mysql_close($db);
die DB wieder zu schließen.
beim zweiten schon, und wenn dann mysql_close($db); da steht, dann wird sie sogar wieder geschlossen.
Am anfang ist es EIGENTLICH egal was du nimmst, aber wenn du mehr User auf der Seite hast, ist es besser die DB immer zu schließen, sonst braucht der Zugriff darauf länger. _________________ Rechtschreibfehler sind beabsichtigt, sie dienen der Verschleiherung meiner tatsächlichen Genialität
____________________________________
Eine Signatur sie alle zu knechten
|
|
| Nach oben |
|
 |
dein_opi Beliebter [User]


Anmeldung: 07.11.04 Beiträge: 428 Wohnort: Göttingen
|
Verfasst am: 04.10.2008, 13:59 Titel: |
|
|
wenn du die verbindung einer variablen zuweist, kannst du nacher bei einer sql abfrage angeben WELCHE datenbank verbindung vewendet werden soll (du kannst ja neben eigenem sql server auch "fremde" bzw. von anderen domains abfragen soweit du die zugänge kennst)
somit stellst du pro dokument manchmal mehrere datenbankverbindungen her und gibst an welche verbindung für welche abfrage verwendet werden soll _________________
News Script Rezepte CMS Counter
|
|
| Nach oben |
|
 |
Kristallprinz Neuer [User]

Anmeldung: 03.10.08 Beiträge: 5 Wohnort: Rees
|
Verfasst am: 08.10.2008, 05:50 Titel: |
|
|
Erstmal Danke für die Antworten - aber nachdem ich jetzt alle PHP-Dateien durchgesehen habe, kommt wieder was das etwas unverständlich ist!!
Habe den Code der auf die Datenbank zugreift nun in vielen Varianten gefunden:
$db = mysql_connect("localhost","$mysqlusername","$mysqlkennwort") or die(mysql_error());
mysql_select_db($dbname,$db) or die(mysql_error();
mysql_connect("localhost","$mysqlusername","$mysqlkennwort") or die(mysql_error());
mysql_select_db($dbname,$db) or die(mysql_error());
@mysql_connect("localhost","$mysqlusername","$mysqlkennwort") or die(mysql_error());
@mysql_select_db($dbname,$db) or die(mysql_error());
Wobei ich hier um abzukürzen, die anderen Varianten durch die farblich gekennzeichneten Textstellen markiere. Einfach mal diese weglassen in allen Variationen, dann wißt ihr was ich meine - mal fehlt der grüne,mal der rote oder alle beide Teile usw.
Aber dann sind da noch zwei ganz andere:
$db = mysql_connect("localhost","$mysqlusername","$mysqlkennwort") or die(mysql_error());
mysql_select_db($dbname,$db) or die(mysql_error();
echo mysql_error();
mysql_connect("localhost","$mysqlusername","$mysqlkennwort") or die(mysql_error());
echo mysql_error();<--??
Nun stellt sich mir die Frage: Was ist jetzt korrekt??
Und: Wofür ist das @ - Zeichen??
Habe dieses auch öfter vor anderen Worten gefunden - z.B @$res
Denke ja auch mal das der Code für den DB-Zugriff in allen PHP-Dateien gleich lauten sollte - oder?
|
|
| Nach oben |
|
 |
dein_opi Beliebter [User]


Anmeldung: 07.11.04 Beiträge: 428 Wohnort: Göttingen
|
Verfasst am: 08.10.2008, 06:31 Titel: |
|
|
alle 3 von dir genannten db verbindungen sind richtig..
1) die verbindung wird einer variablen zugeordnet
2) die verbindung wird KEINER variablen zugeordnet
3) die verbindung wird KEINER variablen zugeordnet, durch das @ davor vermeidet man die fehlerausgabe wenn es mit der verbindung mal nicht klappen sollte..
echo mysql_error(); => zeigt den sql fehler an
or die(mysql_error()); => bricht das script an wenn die verbindung nicht geklappt hat und zeigt die sql fehler meldung.. _________________
News Script Rezepte CMS Counter
|
|
| Nach oben |
|
 |
Melzebub Helfer [User]


Anmeldung: 15.02.08 Beiträge: 109
|
Verfasst am: 08.10.2008, 07:44 Titel: |
|
|
also foren sind ja schön und gut, aber in dieserr hinsicht geht es allmählich in tutorial richtung.
befor das hier ewig andauert ob mit oder ohne anführungszeichen und wofür ein @ steht, schau doch einfach mal hier rein
http://www.selfphp.de/
thx _________________ wer einen Hammer halten kann,
ist nicht unbedingt ein guter Handwerker!
digitalmedia4u-webdesign-animation-illustration
|
|
| Nach oben |
|
 |
Kristallprinz Neuer [User]

Anmeldung: 03.10.08 Beiträge: 5 Wohnort: Rees
|
Verfasst am: 08.10.2008, 17:13 Titel: |
|
|
Dank für die Antworten!
Aber so ne Lösung für mich hab ich nicht bekommen.
Da man mir beigebracht hat alles einheitlich zu gestalten, suchte ich eigentlich eine einheitliche Lösung. Was auch der link von Melzebub nicht lösen konnte!
Also werde ich jetzt den Code in allen PHP-Dateien für mich einheitlich gestalten und zwar so:
$db = mysql_connect("localhost","$mysqlusername","$mysqlkennwort") or die(mysql_error());
mysql_select_db($dbname,$db) or die(mysql_error();
und am Ende der Dateien
mysql_close($db).
Dann bekomme ich nach Euren Ausführungen zumindest immer SQL-Fehler angezeigt und kann diese korregieren!
Wobei ich noch testen muss ob ich die DB jedesmal schließe, wenn der Code mehrfach in einer Datei steht oder ich ihn nur am Ende der Datei schließen lasse.
Werde das Script dann mal so testen.
Werde mir aber dann dieser Tage mal den Tipp von Melzebub zu Gemüte führen.
Thx
|
|
| Nach oben |
|
 |
benjam4 Bekannter [Mod]


Anmeldung: 17.05.06 Beiträge: 1320 Wohnort: Ostfildern ...
|
Verfasst am: 08.10.2008, 20:44 Titel: |
|
|
Es reicht, wenn du am anfang die DB öffnest, und am ende der Datei sie wieder schließt.
Mehrmals ist nicht nötig. _________________ Rechtschreibfehler sind beabsichtigt, sie dienen der Verschleiherung meiner tatsächlichen Genialität
____________________________________
Eine Signatur sie alle zu knechten
|
|
| Nach oben |
|
 |
800XE Bekannter [Mod]


Anmeldung: 24.10.04 Beiträge: 1410 Wohnort: Speyer
|
Verfasst am: 09.10.2008, 07:11 Titel: |
|
|
sorry, aber kauf dir ein Büchlein
http://www.knowware.de/?cat=3.3&book=php_mysql
| Kristallprinz hat folgendes geschrieben: | Also werde ich jetzt den Code in allen PHP-Dateien für mich einheitlich gestalten und zwar so:
$db = mysql_connect("localhost","$mysqlusername","$mysqlkennwort") or die(mysql_error());
mysql_select_db($dbname,$db) or die(mysql_error();
|
und das ist falsch
denn nicht überall heist es "localhost"
| Code: |
$_CMS800sql['counter']='1';
$_CMS800sql['line'][1]='0';
$_CMS800sql['host'][1]='mysql.goneo.de';
$_CMS800sql['base'][1]='6987698m7698686_1;
$_CMS800sql['name'][1]='#CheGuide';
$_CMS800sql['user'][1]='6987698m7698686_1';
$_CMS800sql['pass'][1]='geheimesPassWort';
|
| Code: |
$_CMS800sql['counter']='3';
$_CMS800sql['line'][1]='0';
$_CMS800sql['host'][1]='localhost';
$_CMS800sql['base'][1]='usr_web123_1';
$_CMS800sql['name'][1]='#CSVAndy';
$_CMS800sql['user'][1]='web123';
$_CMS800sql['pass'][1]='geheimesPassWort';
$_CMS800sql['line'][2]='0';
$_CMS800sql['host'][2]='localhost';
$_CMS800sql['base'][2]='usr_web123_2';
$_CMS800sql['name'][2]='#7b3';
$_CMS800sql['user'][2]='web123';
$_CMS800sql['pass'][2]='geheimesPassWort';
$_CMS800sql['line'][3]='0';
$_CMS800sql['host'][3]='localhost';
$_CMS800sql['base'][3]='usr_web123_3';
$_CMS800sql['name'][3]='#AndyZmuda';
$_CMS800sql['user'][3]='web123';
$_CMS800sql['pass'][3]='geheimesPassWort';
|
| Code: |
$db=CMS800sql('open',$sql=2,$base='');
|
| Code: |
function CMS800sql( $do, // action = open or close
$sql, // DBnummer
$base='' // DBname
)
{ global $_CMS800sql;
if ( $base )
{
$sql=$i=0;
while( !$sql && $i++<$_CMS800sql['counter'] )
{
if ( !strcmp($base,$_CMS800sql['base'][$i]) ) $sql=$i;
}
}
if ( !$_CMS800sql['line'][$sql] )
{
$_CMS800sql['line'][$sql]
= mysql_connect($_CMS800sql['host'][$sql],
$_CMS800sql['user'][$sql],
$_CMS800sql['pass'][$sql]) or die("Keine Verbindung möglich: " . mysql_error());
} mysql_select_db($_CMS800sql['base'][$sql]) or die("Auswahl der Datenbank fehlgeschlagen");
return($_CMS800sql['line'][$sql]);
}
|
_________________
Seien wir realistisch, versuchen wir das Unmögliche!
CMS800 :::::::::: Andy 800XE Zmuda :::::::::
ich bin nicht unhöflich, ich bin binär
|
|
| Nach oben |
|
 |
|
|
 |
|
Alle Zeiten sind GMT + 1 Stunde
|
| Seite 1 von 1 |
|  |