Zum Inhalt springen

PHP/ MySQL? Fehler beim Eintrag in die Datenbank/ php.ini


Empfohlene Beiträge

Hallöchen,

folgenden Fehler bekomme ich, wenn ich Einträge über ein PHP-Formular in die Datenbank machen möchte:

Warning: mysql_query(): 1 is not a valid MySQL-Link resource in /usr/local/htdocs/mysql.php on line 58

Folgender Fehler ist aufgetreten: MYSQL_ERROR - Invalid SQL: INSERT INTO events (topic,room,startdate,enddate,beamer) VALUES("test",0,1091662620,1091666220,0)

In Zeile 58 der mysql.php steht folgendes:

53 function execute_query($query) {

54

55

56 if ($this->debug) { print("Debug: QUERY = $query<br>"); };

57

58 $this->query_handle = mysql_query($query, $this->db_handle);

59 $this->Row = 0;

60 if (!$this->query_handle) {

61

62 print("Folgender Fehler ist aufgetreten: MYSQL_ERROR - Invalid SQL: $query");

63 exit();

64

65 }

66

67 }

Ich glaube aber nicht, dass es ein Fehler in der mysql.php ist, denn auf einem anderen Server lief es ohne Probleme.

Muss vielleicht wieder was in der php.ini geändert werden?

Wahrscheinlich ist es nur ein kleiner dümmlicher Eintrag... :confused:

Danke für Eure Hilfe....

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde vermuten du hast für ein Feld einen falschen Datentyp angegeben und er kann deshalb die Werte nicht inserten.

Deshalb der "Invalid SQL" (vermutlich :P )

naja daran kanns eigentlich nicht liegen, da ja oben steht, dass er kein resource identifier bekommen hat!

Also, IMHO ist in $this->db_handle nicht das richtige Handle drin. Ist das richtig geschrieben? Hast du vorher nen Connect gemacht?

sowas in der Richtung müsste es sein.

Vielleicht hast du den DB namen falsch geschrieben? ( case sensitive!) o.ä.

Das Problem muss auf jeden fall schon vor diesem Query bestehen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ein connect wurde gemacht:

class DB_HANDLER_CLASS {


  var $Host         = "";

  var $User         = "";

  var $Password     = "";

  var $Database     = "";


  var $query_handle = 0;

  var $db_handle    = 0;

  var $Record       = array();

  var $Row          = -1;


  var $debug        = FALSE;



  function DB_HANDLER_CLASS($Host = "", $User = "", $Password = "", $Database = "") {


    $this->Host     = $Host;

    $this->User     = $User;

    $this->Password = $Password;

    $this->Database = $Database;


  }


  function connect() {


    if ($this->db_handle == 0) {


      $this->db_handle = mysql_connect($this->Host, $this->User, $this->Password);


      if (!$this->db_handle) {


      	print("Folgender Fehler ist aufgetreten: MYSQL_ERROR - Connection failed.");

    	exit();


      }


      if (!mysql_select_db($this->Database, $this->db_handle)) {


      	print("Folgender Fehler ist aufgetreten: MYSQL_ERROR - cannot use Database $this->Database");

    	exit();


      }


    }


  }

Wie gesagt, ich habe alles nur auf einen anderen Server gepackt.

Andere Tabellen in der Datenbank funktionieren. :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Enrico: Wie lautet zur Ausgabe der genaue Source und an welche Stelle muss ich ihn einfügen? *keine Ahnung von SQL/PHP hat*

Du hattest mir letztens schonmal geholfen.... (PHP-Formulare werden nicht mehr angezeigt). Kann es nicht wieder nur ein Eintrag in irgendeiner ini oder config.php sein?

Am Source sollte es nicht liegen. Wie gesagt, der lief problemlos auf dem alten Server.

Komisch ist auch, dass andere Tabellen in meiner Datenbank funktionieren. Sie sind zwar grafisch etwas anders aufgebaut, aber daran sollte es ja nun nicht liegen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das steht dazu in der mysql.php :


  function execute_query($query) {



    if ($this->debug) { print("Debug: QUERY = $query<br>"); };


    $this->query_handle = mysql_query($query, $this->db_handle);

    $this->Row = 0;

    if (!$this->query_handle) {


      print("Folgender Fehler ist aufgetreten: MYSQL_ERROR - Invalid SQL: $query");

      exit();


    }


  }

Link zu diesem Kommentar
Auf anderen Seiten teilen

Meinst Du das hier?

Das steht in der kalender.phtml, also die Datei (Seite), die im Browser angezeigt wird, um Einträge zu ändern, hinzuzufügen, löschen...

Hab den ganzen Block von connect bis disconnect kopiert.

    $hdb->connect();


    for ($day = 0; $day < $monthdays[$month]; $day++) {

      $startdate = mktime(0,0,0,$month+1,$day+1,$year);

      $enddate = $startdate + 3600*24;


      $TPL[topic] = "";

      $TPL[room] = "";

      $TPL[starttime] = "";

      $TPL[endtime] = "";

      $TPL[eventid] = "";



      $thatday = getdate($startdate);

      $TPL[day] = $day+1;

      $TPL[dayname] = $daynames[$thatday[wday]];


      $TPL[currentday] = ($today[mday] == $day+1) && ($today[mon] == $month+1);


      $hdb->execute_query("SELECT eventid,topic,room,startdate,enddate FROM bew_events WHERE startdate >= $startdate AND enddate <= $enddate ORDER BY startdate,enddate");

      if ($TPL[hasentry] = $hdb->num_rows() > 0) {

        while ($hdb->next_record()) {

          list($TPL[eventid],$TPL[topic],$TPL[room],$starttime, $endtime) = $hdb->Record;

          $TPL[room] = $option_room[$TPL[room]];

          $TPL[starttime] = date("H\:i", $starttime)." Uhr";

          $TPL[endtime] = date("H\:i", $endtime)." Uhr";

          $TPL[insert_dayline] .= Cell2("dayline", $TPL);


          $TPL[day] = "";

          $TPL[dayname] = "";


        }

      } else {

        $TPL[insert_dayline] .= Cell2("dayline", $TPL);

      }



    }


    $hdb->disconnect();

Es gibt noch mehr von diesen execute_query()-Anweisungen, je nachdem, ob ich einen neuen Eintrag erstellen, einen vorhanden ändern oder löschen möchte. Ist aber alles im gleichen Format.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das mag er nun gar nicht. :(

"Parse error: parse error, unexpected T_ECHO in /usr/local/htdocs/bewbadkalender.phtml on line 95" erscheint im Browser.

Sieht so im phtml-File aus:

echo "<pre>"; 
var_dump($hdb)
echo"</pre><hr/>";

$hdb->execute_query("SELECT eventid,topic,room,startdate,enddate FROM bew_events WHERE startdate >= $startdate AND enddate <= $enddate ORDER BY startdate,enddate");

echo "<pre>";
var_dump($hdb)
echo"</pre><hr/>";[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

laufen auf beiden servern die gleichen webserver?


$TPL[topic] = "";
$TPL[room] = "";
$TPL[starttime] = "";
$TPL[endtime] = "";
$TPL[eventid] = "";
[/PHP]

sowas z.b. dürfte nur auf einem Apache webserver gehen.

Bei meinem Testserver würde er hier schon abbrechen, da es so heissen müsste:

[PHP]
$TPL['topic'] = "";
$TPL['room'] = "";
$TPL['starttime'] = "";
$TPL['endtime'] = "";
$TPL['eventid'] = "";

Hier ist ein Fehler:


echo "<pre>";
var_dump($hdb)
echo"</pre><hr/>";

$hdb->execute_query("SELECT eventid,topic,room,startdate,enddate FROM bew_events WHERE startdate >= $startdate AND enddate <= $enddate ORDER BY startdate,enddate");

echo "<pre>";
var_dump($hdb)
echo"</pre><hr/>";
[/PHP]

es muss so heissen:

[PHP]
echo "<pre>";
var_dump($hdb); // hier hat der ";" gefehlt
echo"</pre><hr/>";

$hdb->execute_query("SELECT eventid,topic,room,startdate,enddate FROM bew_events WHERE startdate >= $startdate AND enddate <= $enddate ORDER BY startdate,enddate");

echo "<pre>";
var_dump($hdb); // hier hat der ";" gefehlt
echo"</pre><hr/>";

Link zu diesem Kommentar
Auf anderen Seiten teilen

So, die ersten beiden Abschnitte, die mir der Browser ausgibt:


object(db_handler_class)(9) {

  ["Host"]=>

  string(14) "localhost:3306"

  ["User"]=>

  string(4) "root"

  ["Password"]=>

  string(0) ""

  ["Database"]=>

  string(3) "kkh"

  ["query_handle"]=>

  int(0)

  ["db_handle"]=>

  resource(1) of type (mysql link)

  ["Record"]=>

  array(0) {

  }

  ["Row"]=>

  int(-1)

  ["debug"]=>

  bool(false)

}



--------------------------------------------------------------------------------


object(db_handler_class)(9) {

  ["Host"]=>

  string(14) "localhost:3306"

  ["User"]=>

  string(4) "root"

  ["Password"]=>

  string(0) ""

  ["Database"]=>

  string(3) "kkh"

  ["query_handle"]=>

  resource(2) of type (mysql result)

  ["db_handle"]=>

  resource(1) of type (mysql link)

  ["Record"]=>

  array(0) {

  }

  ["Row"]=>

  int(0)

  ["debug"]=>

  bool(false)

}

Die Nachfolgenden sehen genauso aus, nur mit fortlaufenden Nummern.

int(-1) steht nur im ersten Abschnitt. Bei allen anderen int(0).

Und jetzt sagt auch noch, dass ihr damit was anfangen könnt. :confused:

@ kills: Auf beiden Servern läuft Apache. Vielleicht Versionsunterschiede?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Okay. Langsam gehen mir die Ideen aus.

Füge mal den Codeschnipsel mit dem var_dump() mal in die mysql.php ein (das "X" markiert die Stelle):


if (!mysql_select_db($this->Database, $this->db_handle)) {

print("Folgender Fehler ist aufgetreten: MYSQL_ERROR - cannot use Database $this->Database");
X
exit();

}
[/PHP]

Sieht die Ausgabe noch immer genauso aus? Besonders auf ['db_handle'] achten!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Pack den Vardump doch mal bitte in die execute_query()-Funktion:

function execute_query($query) {


if ($this->debug) { print("Debug: QUERY = $query<br>"); };

echo "<pre>";
var_dump($this);
echo"</pre><hr/>";

$this->query_handle = mysql_query($query, $this->db_handle);
$this->Row = 0;
if (!$this->query_handle) {

print("Folgender Fehler ist aufgetreten: MYSQL_ERROR - Invalid SQL: $query");
exit();

}

}[/PHP]

Ich glaube nämlich noch immer, daß er nicht an $this->db_handle rankommt, schließlich läßt das die Fehlermeldung vermuten

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sieht die Ausgabe noch immer genauso aus? Besonders auf ['db_handle'] achten!

In den ersten beiden Abschnitten:

["db_handle"]=>

resource(1) of type (mysql link)

Im dritten Abschnitt:

["db_handle"]=>

resource(1) of type (Unknown)

Anschliessend kommt wieder die Fehlermeldung:

Warning: mysql_query(): 1 is not a valid MySQL-Link resource in /usr/local/htdocs/mysql.php on line 63

Folgender Fehler ist aufgetreten: MYSQL_ERROR - Invalid SQL: INSERT INTO bew_events (topic,room,startdate,enddate,beamer) VALUES("test",0,1091691960,1091691960,0)

Bevor ich den Code in die mysql.php eingefügt habe, kamen nur diese Abschnitte (mehr als drei), wie gestern gepostet, aber nicht die Fehlermeldung.

@ICQ: Hab die Code-Zeile dahinter gepackt. Jetzt kommt das:

MYSQL_ERROR 0:

Warning: mysql_query(): 1 is not a valid MySQL-Link resource in /usr/local/htdocs/mysql.php on line 58

MYSQL_ERROR :

Folgender Fehler ist aufgetreten: MYSQL_ERROR - Invalid SQL: INSERT INTO bew_events (topic,room,startdate,enddate,beamer) VALUES("test",0,1091692440,1091692440,0)

@kleiner Hobbes: Leider auch nichts anderes:

object(db_handler_class)(9) {

  ["Host"]=>

  string(14) "localhost:3306"

  ["User"]=>

  string(4) "root"

  ["Password"]=>

  string(0) ""

  ["Database"]=>

  string(3) "kkh"

  ["query_handle"]=>

  int(0)

  ["db_handle"]=>

  resource(1) of type (mysql link)

  ["Record"]=>

  array(0) {

  }

  ["Row"]=>

  int(-1)

  ["debug"]=>

  bool(false)

}



--------------------------------------------------------------------------------

MYSQL_ERROR 0: 


object(db_handler_class)(9) {

  ["Host"]=>

  string(14) "localhost:3306"

  ["User"]=>

  string(4) "root"

  ["Password"]=>

  string(0) ""

  ["Database"]=>

  string(3) "kkh"

  ["query_handle"]=>

  int(0)

  ["db_handle"]=>

  resource(1) of type (Unknown)

  ["Record"]=>

  bool(false)

  ["Row"]=>

  int(1)

  ["debug"]=>

  bool(false)

}



--------------------------------------------------------------------------------


Warning: mysql_query(): 1 is not a valid MySQL-Link resource in /usr/local/htdocs/mysql.php on line 62

MYSQL_ERROR : 

Folgender Fehler ist aufgetreten: MYSQL_ERROR - Invalid SQL: INSERT INTO bew_events (topic,room,startdate,enddate,beamer) VALUES("test",0,1091692620,1091692620,0)

:confused: *noch nie so ratlos war*

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...