2011-10-15 65 views
1

當試圖從我的數據庫表「清單」我收到以下錯誤返回一組簡單的結果;警告:mysqli_error()期望的是1個參數,0給出

「警告: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

[mysqli_error()的確切副本只需要1個參數,0給出](http://stackoverflow.com/questions/2262988/mysqli-error-expects-exactly-1-parameter-0-given)和[many另外](http://stackoverflow.com/search?q=mysqli_error%28%29+expects+exactly+1+parameter%2C+0+given) – gbn

+0

我看着那個線程首先發布前,並試圖作一些修改但在Spudley在下面插話之前顯然沒有完全「得到它」。 – Wordpressing

+0

可能的重複[Warning:mysql_fetch_ *期望參數1是資源,布爾給定錯誤](http://stackoverflow.com/questions/11674312/warning-mysql-fetch-expects-parameter-1-to-be-resource -boolean-given-error) –

回答

2

我想你遇到的問題是因爲你合併和非面向對象的調用和mysqli庫面向對象的。

mysqli_error()功能確實需要一個參數 - 它需要連接變量;在你的情況下,$conn

mysqli_error($conn) 

Howwever,如果您想在面向對象的方式寫它,因爲你已經做了大部分的數據庫調用的其餘部分,你會寫這樣的:

$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()功能,這從它不需要連接變量較新的一個不同。如果您正在使用的書中有錯誤,這可能是混淆的根源。

+0

嗨Spudley,工作!我根本不知道這是個問題,我認爲這本書讓我感到有點困惑(現在),但感謝您澄清這一點。讚賞。 – Wordpressing

相關問題