2016-04-14 14 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マニュアルのWebサイト - >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私は両方の種類を試してみたところ、2番目のエラーにつながります。 –

答えて

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

ありがとうございます!これは私が上に移動するのに役立ちました:) –

関連する問題