Warning: mysqli_error() expects exactly 1 parameter, 0 given [duplicate]

笑着哭i 提交于 2019-12-29 08:21:53

问题


When trying to return a simple set of results from my database table 'checklist' I receive the following error;

"Warning: mysqli_error() expects exactly 1 parameter, 0 given"

The code of my list.php file is as follows;

<?php
require_once('/includes/connection.inc.php');
// create database connection
$conn = dbConnect('read');
$sql = 'SELECT * FROM checklist ORDER BY created DESC';
$result = $conn->query($sql) or die(mysqli_error());
?>

<?php while($row = $result->fetch_assoc()) { ?>

<?php echo $row['created']; ?>
<?php echo $row['title']; ?>

<?php } ?>

The contents of my connection.inc.php file (for reference) is as follows;

    <?php 
        function dbConnect($usertype, $connectionType = 'mysqli') { 
          $db = 'projectmanager'; 
          $host = 'localhost'; 
          if ($usertype  == 'read') { 
            $user = 'root'; 
            $pwd = ''; 
          } elseif ($usertype == 'write') { 
            $user = 'root'; 
            $pwd = ''; 
          } else { 
            exit('Unrecognized connection type'); 
          } 

                // Connection goes here...
                  if ($connectionType == 'mysqli') {
    return new mysqli($host, $user, $pwd, $db);
  } elseif ($mysqli->connect_error) {
    die('Connect Error: ' . $mysqli->connect_error);
  }

    }

    ?>

I've been trying to follow some examples out of a book PHP Solutions: Dynamic Web Design Made Easy found HERE ...but I already had an issue with the connection.inc.php file (snippet shown above) where I had to correct "or die ('Cannot open database');" and replace it with the IF based statement you see above for the mysqli_error. So I am wondering if this book is riddled with some basic, fundamental errors - at least that when presented to novices like me leave us baffled.

Any help guys?

Thank you


回答1:


I think the problem you're having is because you're combining object-oriented and non-OO calls to the MySQLi library.

The mysqli_error() function does indeed require a parameter -- it requires the connection variable; in your case, $conn.

mysqli_error($conn)

Howwever, if you'd written it in an OO manner, as you have done for most of the rest of the database calls, you would have written it like this:

$conn->error

Since all the rest of your code is written using object-oriented calls, it would make sense to use it for this call as well.

So your full line of code would look like this:

$result = $conn->query($sql) or die($conn->error);

You can see further examples in the PHP manual: http://php.net/manual/en/mysqli.error.php

Hope that helps.

With regard your question about the book you're using: I can't comment directly on the book itself as I haven't read it. But note that there are two MySQL libraries for PHP; the older mysql library, and the newer mysqli library. The older library also has a mysql_error() function, which differs from the newer one in that it does not require a connection variable. If there is an error in the book you are using, this may be the source of the confusion.



来源:https://stackoverflow.com/questions/7778562/warning-mysqli-error-expects-exactly-1-parameter-0-given

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!