当我尝试从我的数据库表'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的语句。因此,我想知道这本书是否充满了一些基本的,根本性的错误 - 至少当提交给像我这样的新手时,我们会感到困惑。
任何帮助人员?
谢谢
答案 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()
函数,该函数与较新的函数不同,因为它不需要连接变量。如果你正在使用的书中有错误,这可能是造成混淆的根源。