Мисля, че проблемът, който имате, е, че комбинирате обектно-ориентирани и не-OO повиквания към библиотеката MySQLi.
mysqli_error()
функцията наистина изисква параметър - изисква променливата за свързване; във вашия случай $conn
.
mysqli_error($conn)
Въпреки това, ако сте го написали по OO начин, както сте направили за повечето от останалите извиквания на базата данни, щяхте да го напишете така:
$conn->error
Тъй като целият останал код е написан с помощта на обектно-ориентирани извиквания, би било логично да го използвате и за това извикване.
Така че пълният ви ред с код ще изглежда така:
$result = $conn->query($sql) or die($conn->error);
Можете да видите допълнителни примери в ръководството за PHP:http://php.net/manual /en/mysqli.error.php
Надявам се това да помогне.
По отношение на въпроса ви относно книгата, която използвате:не мога да коментирам директно самата книга, тъй като не съм я чел. Но имайте предвид, че има две MySQL библиотеки за PHP; по-старият mysql
библиотека и по-новият mysqli
библиотека. По-старата библиотека също има mysql_error()
функция, която се различава от по-новата по това, че не изисква променлива за свързване. Ако има грешка в книгата, която използвате, това може да е източникът на объркването.