2016-04-14 110 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

谢谢!这帮助我继续前进:) –