PHP Verbindung zu DB weg obwohl geöffnet

  • Ersteller Ersteller Mr. Snoot
  • Erstellt am Erstellt am
M

Mr. Snoot

Gast
Hio,

ich hab hier ein komisches Problem mit der Verbindung zu einer MySQL-DB.

Im ersten Script wird die Verbindung zur DB hergestellt und im zweiten Script erfolgt dann eine DB-Abfrage. Je nach Situation (if ...) brauche ich eine andere Abfrage. Die eine Abfrage funktioniert problemlos, aber bei der anderen bekomm ich nur einen Fehler:

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'nobody'@'localhost' (using password: NO) in /.../www/script2.php on line 61

1. Script:
PHP:
<?php
  include("db.php"); # Verbindung zur DB herstellen
  ...
?>

2. Script:
PHP:
if(isset($_GET['bereich']))
{
  ###  
  # Abfrage funktioniert
  $sql_sprache = sprintf("SELECT url FROM $sprache_db_kapitel WHERE id_kapitel = '%s'",
    mysql_real_escape_string($id_kapitel));
  $abfrage = mysql_query($sql_sprache);
  while($row = mysql_fetch_object($abfrage))
  {
    ..
  }
  mysql_free_result($abfrage);
}
elseif(isset($_GET['seite']))
{
  ###
  #Abfrage funktioniert nur nach erneutem Verbindungsaufbau!?!?!
  #include("db.php"); # Verbindung zur DB herstellen
  $sql_seite = sprintf("SELECT link FROM $db_seiten WHERE id = '%s'",
    mysql_real_escape_string($seiten_id));
  $abfrage = mysql_query($sql_seite);
  while($row = mysql_fetch_object($abfrage))
  {
    ..
  }
  mysql_free_result($abfrage);
}


3. Script:
PHP:
<?php
  include(script1.php);
  include(script2.php);
?>

Kann doch nicht wahr sein, oder? :freak: Wie kann ich denn feststellen, wo/warum die Verbindung flöten geht?
 
Zuletzt bearbeitet:
Okay, danke. Hab's damit gelöst, auch wenn ich gerade nicht wirklich weiß warum :freak: :)


Aber da sehe ich mal wieder, was ich aktuell für ein Chaos habe; da blickt niemand mehr durch :(
 
Wem sagst du das... ich plane meine Anwendungen immer fein säuberlich und modular und am Ende bin ich froh wenn ich meinen eigenen Code nicht debuggen muss :D
 
Jo, fast so wie beim Computerzusammenbauen. Am Anfang achte ich drauf, alle Kabel sauber zu verlegen, und am Ende sieht es dann sowieso wieder so aus :D
hitzetod_03_kabelsalat.jpg


Leider hab ich früher alles ohne DB gemacht, und "muss" das jetzt alles umbauen.
 
Mr. Snoot schrieb:
PHP:
  ###  
  # Abfrage funktioniert
  $sql_sprache = sprintf("SELECT url FROM $sprache_db_kapitel WHERE id_kapitel = '%s'",
    mysql_real_escape_string($id_kapitel));
  $abfrage = mysql_query($sql_sprache);

Du kannst dieses hässliche Konstrukt auch durch prepared statements ersetzen. Zum einen werden die schneller verarbeitet, zum anderen schützen die ebenfalls vor sql injection.

Wenn deine PHP Version aktuell genug ist, dann kannst du PDO verwenden. Damit ist dein Code auch gleich unabhängig vom tatsächlichen Datenbanksystem.

Ähnliches lässt sich ansonsten mit pear installieren.
 
Zurück
Oben