• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Fatal error: Call to a member function prepare() on a non-object

Status
Für weitere Antworten geschlossen.

Bourbon

Mitglied
Hallo Leute,

bei einer einfachen Datenbankabfrage bekomm ich immer den Fehler:

Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\php-beispiele\MySQL-Test\db_vorbereitet_select.php on line 12

Hier hier die dazu gehörige Zeile:

PHP:
if($stmt = $mysqli->prepare("SELECT donor_ID, birthday_party, beschreibung FROM group

Wo liegt da der Fehler?
 
Werbung:
Hallo Leute,

bei einer einfachen Datenbankabfrage bekomm ich immer den Fehler:

Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\php-beispiele\MySQL-Test\db_vorbereitet_select.php on line 12
Hier hier die dazu gehörige Zeile:

PHP:
if($stmt = $mysqli->prepare("SELECT donor_ID, birthday_party, beschreibung FROM group

Wo liegt da der Fehler?

$mysqli ist ein non-object, oder besser gesagt: Kein Object...
 
Zuletzt bearbeitet:
Und wie funktioniert das nun?
Was mich wundert: der Quellcode stammt aus dem Buch "PHP 5.3 % MySQL 5.1" und müsste so eigentlich funktionieren. Glaube jedenfalls, nicht die das Buch in der x-ten Auflage mit einem solch gravierenden Fehler veröffentlicht hätten. Und falls doch, sagt das viel über den Autor und den Verleger aus.
 
Werbung:
Und wie funktioniert das nun?
Was mich wundert: der Quellcode stammt aus dem Buch "PHP 5.3 % MySQL 5.1" und müsste so eigentlich funktionieren. Glaube jedenfalls, nicht die das Buch in der x-ten Auflage mit einem solch gravierenden Fehler veröffentlicht hätten. Und falls doch, sagt das viel über den Autor und den Verleger aus.

Naja, die wenigsten bringen es fertig ein Buch zu schreiben, in dem alle Codebeispiele funktionieren. Denke aber nicht dass dies hier der Fall ist.

Wo wird $mysqli in deinem Script gesetzt? Ich denke nirgends...
 
Hier mal der komplette Code:

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Vorbereitete Anweisung: SELECT</title>
  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
</head>
<body>
<?php
require_once "db_daten.php";
$suche = "%beere%";
if($stmt = $mysqli->prepare("SELECT name, beschreibung, preis FROM pflanzen
                 WHERE name LIKE ?")) {
  $stmt->bind_param("s",  $suche);
  $stmt->execute();
  $stmt->bind_result($name, $beschreibung, $preis);
  echo "<table border='1'>\n";
  while($stmt->fetch()) {
    echo "<tr>\n\t<td>"
       . htmlspecialchars($name)
       . "</td>\n\t<td>"
       . htmlspecialchars($beschreibung)
       . "</td>\n\t<td>"
       . htmlspecialchars($preis)
       . "</td>\n</tr>\n";
    }
  $stmt->close();
}
$mysqli->close();
?>
</table>
</body>
</html>
 
Werbung:
Und hier db_daten

Code:
<?php
$mysqli = new mysqli("localhost", "root", "passwort", "pflanzen");
if ($mysqli->connect_error) {
  echo "Fehler bei der Verbindung: " . mysqli_connect_error();
  exit();
}
?>
 
Und hier db_daten

Code:
<?php
$mysqli = new mysqli("localhost", "root", "passwort", "pflanzen");
if ($mysqli->connect_error) {
  echo "Fehler bei der Verbindung: " . mysqli_connect_error();
  exit();
}
?>

Kann dir jetzt keine Lösung bieten, aber das Problem scheint es tatsächlich zu geben:
http://stackoverflow.com/questions/9302335/new-mysqli-object-is-null

Welche PHP Version verwendest du? Codefehler kann ich keine erkennen, auch wenn ich eigentlich immer eher dazu tendiere.
 
Zuletzt bearbeitet:
Ich verwende PHP 5.5.11.

Okay, also habe ich wenigstens schon mal nichts falsch gemacht :)

die db_daten.php wirft folgende Fehlermeldung aus:

Notice
: Undefined variable: mysqli in C:\xampp\htdocs\php-beispiele\MySQL-Test\db_vorbereitet_select.php on line 12
 
Zuletzt bearbeitet:
Werbung:
Ich verwende PHP 5.5.11.

Okay, also habe ich wenigstens schon mal nichts falsch gemacht :)

die db_daten.php wirft folgende Fehlermeldung aus:
Notice: Undefined variable: mysqli in C:\xampp\htdocs\php-beispiele\MySQL-Test\db_vorbereitet_select.php on line 12

Schon interessanter.
die db_daten.php wird mit ihren 7 Zeilen das aber eher nicht ausgeben ;)

Ist das wirklich dein gesamter Code?
 
Versuch mal, require oder include zu benutzen statt require_once. Wenn die Datei noch woanders eingebunden wird, könnte das vielleicht schiefgehen.
 
Also in dem Ordner liegen nur die beiden Dateien. Da ich da leider noch nicht so versiert bin, hätte ich da mal eine weitere Frage:

Kann es vielleicht sein, dass die Datei auf die Dateien zugreift, die nicht im Ordner sind? Weil die beiden Dateien sind nur Kopien.
Okay ich probier das mal mit include etc.
 
Werbung:
Also in dem Ordner liegen nur die beiden Dateien. Da ich da leider noch nicht so versiert bin, hätte ich da mal eine weitere Frage:

Kann es vielleicht sein, dass die Datei auf die Dateien zugreift, die nicht im Ordner sind? Weil die beiden Dateien sind nur Kopien.
Okay ich probier das mal mit include etc.

Ist der Code den du gepostet hast, alles was du hast? Also keine Zeile mehr?
Hätte jetzt als nächstes nämlich auch require_once verdächtigt.
 
So, das Problem hat sich auf mysteriöse Weise von selbst erledigt. Keine Ahnung woran es lag. Der Code war ja anscheinend fehlerfrei, also muss irgendwo anders der Fehler gelegen haben.

Aber vielen Dank nochmals für eure Hilfe! Ihr seid spitze und vor allem sehr schnell :)
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben