警告:mysqli_error()只需要1个参数,给定0

时间:2011-10-15 14:54:35

标签: php mysql mysqli

当我尝试从我的数据库表'checklist'返回一组简单的结果时,我收到以下错误;

“警告:mysqli_error()预计只有1个参数,0给出”

我的list.php文件的代码如下;

<?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 } ?>

我的connection.inc.php文件的内容(供参考)如下;

    <?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);
  }

    }

    ?>

我一直试图从PHP解决方案中找到一些例子:动态网页设计轻松找到HERE ...但我已经遇到了connection.inc.php文件的问题(显示的片段)上面)我必须纠正“或死('无法打开数据库');”并将其替换为您在上面看到的mysqli_error的基于IF的语句。因此,我想知道这本书是否充满了一些基本的,根本性的错误 - 至少当提交给像我这样的新手时,我们会感到困惑。

任何帮助人员?

谢谢

1 个答案:

答案 0 :(得分:1)

我认为您遇到的问题是因为您正在将面向对象和非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

希望有所帮助。

关于你正在使用的书的问题:我不能直接评论这本书本身,因为我没有读过它。但请注意,PHP有两个MySQL库;较早的mysql库和较新的mysqli库。较旧的库还具有mysql_error()函数,该函数与较新的函数不同,因为它不需要连接变量。如果你正在使用的书中有错误,这可能是造成混淆的根源。