Creo que el problema que está teniendo es porque está combinando llamadas orientadas a objetos y no OO a la biblioteca MySQLi.
El mysqli_error()
de hecho, la función requiere un parámetro:requiere la variable de conexión; en tu caso, $conn
.
mysqli_error($conn)
Sin embargo, si lo hubiera escrito de manera OO, como lo ha hecho con la mayoría del resto de las llamadas a la base de datos, lo habría escrito así:
$conn->error
Dado que todo el resto de su código está escrito usando llamadas orientadas a objetos, también tendría sentido usarlo para esta llamada.
Así que su línea de código completa se vería así:
$result = $conn->query($sql) or die($conn->error);
Puede ver más ejemplos en el manual de PHP:http://php.net/manual /es/mysqli.error.php
Espero que ayude.
Con respecto a su pregunta sobre el libro que está usando:no puedo comentar directamente sobre el libro en sí porque no lo he leído. Pero tenga en cuenta que hay dos bibliotecas MySQL para PHP; el antiguo mysql
biblioteca, y el nuevo mysqli
biblioteca. La biblioteca anterior también tiene un mysql_error()
función, que se diferencia de la más reciente en que no requiere una variable de conexión. Si hay un error en el libro que está utilizando, esta puede ser la fuente de la confusión.