Sven Rautenberg: MySQL-Handle ungültig nach include

Beitrag lesen

Moin!

include("./mainconfigs.php");

var_dump($MYSQL_HANDLE);
  include("./content_load.php");


>   
> mainconfigs.php:  
> ~~~php

  $MYSQL_SERVER = "127.0.0.1";  

>   $MYSQL_USER = "xxx";  
>   $MYSQL_PASSWORD = "xxx";  
>   $MYSQL_DATABASE = "obstruction";  
>   $MYSQL_HANDLE = mysql_connect($MYSQL_SERVER, $MYSQL_USER, $MYSQL_PASSWORD);  
>   if (!$MYSQL_HANDLE )  
>     die("MySQL-Handle ungültig");  
>   mysql_select_db($MYSQL_DATABASE, $MYSQL_HANDLE);

content_load.php:

function GetCounterGeneral()

{
    $res = mysql_query("SELECT * FROM counter",$MYSQL_HANDLE);
return mysql_num_rows($res);
  }
  function GetCounterDaily()
  {
    $res = mysql_query("SELECT * FROM counter WHERE TIMESTAMP >=".mktime(0,0,0,date("n"),date("j"),date("Y")),$MYSQL_HANDLE);
return mysql_num_rows($res);
  }
  $SYSTEM_COUNTER_VALUE=GetCounterGeneral().'|'.GetCounterDaily();

  
  
Schon mal an den Scope der Variablen gedacht? Das, was du da programmiert hast, hat so, wie du es programmiert hast, noch nie funktioniert. Globale Variablen sind grundsätzlich uncool, so auch $MYSQL\_HANDLE, aber dass man sie in Funktionen nochmal explizit verfügbar machen muss, ist schon seit PHP 3 so.  
  
Das tust du nicht.  
  
Also verhielt sich mysql\_query vermutlich bisher so, als wäre kein zweiter Parameter angegeben gewesen. Dann wird automatisch die letzte von mysql\_connect() geöffnete Verbindung verwendet.  
  
Jetzt aber könnte es sein, dass mysql\_query sich dran stört, dass der zweite Parameter keine ordentliche Ressource ist - ohne den Parameter würde immer noch die letzte von mysql\_connect hergestellte Verbindung genutzt.  
  

> var\_dum($MYSQL\_HANDLE) gibt schon NULL aus, also direkt nach dem include(./mainconfigs.php) zu ende ist, ist $MYSQL\_HANDLE  null  
  
Dann schreibst du das Dumpen auch nochmal in die letzte Zeile der mainconfigs.php rein und vergleichst.  
  
 - Sven Rautenberg