2016-04-14 3 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(), я искал, чтобы узнать, существует ли PDO эквивалентный mysql_error(), который ведет меня к тому, что вы видите ниже. Я думаю, что это сработает. Но это не так.

Учебники Пример:

$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 Manual website ->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 a 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

Спасибо! Это помогло мне двигаться дальше :) –

Смежные вопросы