Ich denke, das Problem, das Sie haben, liegt darin, dass Sie objektorientierte und Nicht-OO-Aufrufe an die MySQLi-Bibliothek kombinieren.
Der mysqli_error()
Die Funktion benötigt tatsächlich einen Parameter - sie benötigt die Verbindungsvariable; in Ihrem Fall $conn
.
mysqli_error($conn)
Wenn Sie es jedoch in OO-Manier geschrieben hätten, wie Sie es für die meisten anderen Datenbankaufrufe getan haben, hätten Sie es so geschrieben:
$conn->error
Da der gesamte Rest Ihres Codes mit objektorientierten Aufrufen geschrieben wird, wäre es sinnvoll, ihn auch für diesen Aufruf zu verwenden.
Ihre vollständige Codezeile würde also so aussehen:
$result = $conn->query($sql) or die($conn->error);
Weitere Beispiele finden Sie im PHP-Handbuch:http://php.net/manual /de/mysqli.error.php
Hoffe das hilft.
In Bezug auf Ihre Frage zu dem von Ihnen verwendeten Buch:Ich kann das Buch selbst nicht direkt kommentieren, da ich es nicht gelesen habe. Aber beachten Sie, dass es zwei MySQL-Bibliotheken für PHP gibt; das ältere mysql
Bibliothek und das neuere mysqli
Bibliothek. Die ältere Bibliothek hat auch einen mysql_error()
Funktion, die sich von der neueren dadurch unterscheidet, dass sie keine Verbindungsvariable benötigt. Wenn das von Ihnen verwendete Buch einen Fehler enthält, kann dies die Ursache für die Verwirrung sein.