Eu acho que o problema que você está tendo é porque você está combinando chamadas orientadas a objetos e não OO para a biblioteca MySQLi.
O
mysqli_error()
a função realmente requer um parâmetro -- ela requer a variável de conexão; no seu caso, $conn
. mysqli_error($conn)
No entanto, se você o tivesse escrito de maneira OO, como fez para a maioria das chamadas de banco de dados, você o teria escrito assim:
$conn->error
Como todo o resto do seu código é escrito usando chamadas orientadas a objetos, faria sentido usá-lo também para essa chamada.
Portanto, sua linha completa de código ficaria assim:
$result = $conn->query($sql) or die($conn->error);
Você pode ver mais exemplos no manual do PHP:http://php.net/manual /en/mysqli.error.php
Espero que ajude.
Com relação à sua pergunta sobre o livro que você está usando:não posso comentar diretamente sobre o livro em si, pois não o li. Mas note que existem duas bibliotecas MySQL para PHP; o antigo
mysql
biblioteca e o mais novo mysqli
biblioteca. A biblioteca mais antiga também tem um mysql_error()
função, que difere da mais recente, pois não requer uma variável de conexão. Se houver um erro no livro que você está usando, isso pode ser a fonte da confusão.