2016-04-14 88 views
0

我正在運行一個教程,它使用MySQLi,但是我使用的是PDO,我一直在試圖解決這個問題,爲什麼我得到這個錯誤:調用成員函數errorInfo()字符串

Fatal error: Call to a member function errorInfo() on string in D:\Program Files (x86)\xampp\htdocs\repos\bla\web\inboxPage.php on line 34

這裏是我試圖調用errorInfo()的地方,之前我曾經根據教程使用過mysql_error();,但這也拋出了同樣的錯誤。在使用errorInfo()之前,我正在四處查看是否有一個與mysql_error()相關的PDO,這導致我看到下面的內容 - 我認爲它會起作用。但事實並非如此。

教程例如:

$query = "SELECT id, sender, subject, message FROM messages WHERE reciever='$user'"; 
$sqlinbox = mysql_query($query); 

if(!$sqlinbox) 
    { 
    ?> 
    <p><?php print '$query: '.$query.mysql_error();?></p> 
    <?php 
    } 

我的例子:

$sql = 'SELECT id, Sender, Subject, Message FROM privatemessages WHERE Receiver = :receiver'; 
$stmt = $conn->prepare($sql); 
$stmt->bindParam(':receiver', $user); 
$stmt->execute(); 
$result = $stmt->fetch(PDO::FETCH_ASSOC); 

if (!$result){ 
    ?> 
    <p><?php print '$sql: '.$sql.errorInfo(); ?></p> 
    <?php 
} 

這裏是我的數據庫連接:

$servername = 'localhost'; 
$user = 'root'; 
$pass = ''; 
$database = 'tutor_database'; 

try { 
    $conn = new PDO("mysql:host=$servername;dbname=$database", $user, $pass); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} 
catch (PDOException $e){ 
    echo "Connection failed: " . $e->getMessage(); 
} 

此外,我也嘗試從第一個例子PHP手冊網站 - >http://php.net/manual/en/pdostatement.errorinfo.php,發現這樣做給了我:

PDO::errorInfo(): Notice: Array to string conversion in D:\Program Files (x86)\xampp\htdocs\repos\bla\web\inboxPage.php on line 37 $sql: Array

...改爲。

希望能對此有所幫助,因爲我明顯看不見發生了什麼。提前致謝。

+0

@ Chay22您需要將它從連接而不是語句中調用。 '$ conn-> errorInfo();' – Ohgodwhy

+0

@Ohgodwhy我已經嘗試過這兩種,它只是導致我到第二個錯誤。 –

回答

1

在PDO中必須使用completely different method for the error reporting。簡而言之,PDO將會報告它的錯誤,而不需要編寫任何代碼。

所以才採取了錯誤報告部分,只留下

$sql = 'SELECT id, Sender, Subject, Message FROM privatemessages WHERE Receiver = :receiver'; 
$stmt = $conn->prepare($sql); 
$stmt->bindParam(':receiver', $user); 
$stmt->execute(); 
$result = $stmt->fetch(PDO::FETCH_ASSOC); 

這就是你需要的。

+0

謝謝!這幫助我繼續前進:) –

相關問題