Я просматриваю учебное пособие, в котором он использует 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
... вместо этого.
Поблагодарили бы за помощь в этом, поскольку я явно не вижу, что происходит. Заранее спасибо.
@ Chay22 Вам нужно позвонить ему из соединения, а не с заявлением. '$ conn-> errorInfo();' – Ohgodwhy
@Ohgodwhy Я пробовал оба вида, и это просто приводит меня ко второй ошибке. –