mysql — объект ошибки PHP класса не может быть преобразован в строку

Я пытаюсь создать файл PHP, который подключается к базе данных mysql и вставляет данные в базу данных. Я получаю эти ошибки:

(!) Исправляемая фатальная ошибка: объект класса foo_mysqli не может быть преобразован в строку в (!) Примечание: неопределенная переменная: хост в C: \ wamp \ www \ final_kk.php в строке 21

(!) Исправляемая фатальная ошибка: объект класса foo_mysqli не может быть преобразован в строку в C: \ wamp \ www \ final_kk.php в строке 21

Строка 21 — это первая строка внутри попытки. Любая помощь будет оценена. Спасибо!

<?php

class foo_mysqli extends mysqli {
public function __construct($host, $user, $pass, $db) {
parent::__construct($host, $user, $pass, $db);

if (mysqli_connect_error()) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
}
}

$db = new foo_mysqli('localhost', 'root', '', 'users');

echo 'Success... ' . $db->host_info . "\n";

try {
$conn = new PDO("mysql:host=$host;dbname=$db;username=$user;password=$pass", $user, $pass);// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);$sql = "INSERT INTO users (fname, lname,email,username,password,SSN) VALUES ('$fname', '$lname', '$email', '$uname', '$password', '$ssn')";// use exec() because no results are returned
$conn->exec($sql);
echo "New record created successfully";
}

catch(PDOException $e)
{

echo $sql . "<br>" . $e->getMessage();
}

$db->close();
?>

Хорошо … Я сделал некоторые изменения на основе комментариев, и мой код теперь выглядит так:

<?php

class foo_mysqli extends mysqli {
public function __construct($host, $user, $pass, $db) {
parent::__construct($host, $user, $pass, $db);

if (mysqli_connect_error()) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
}
}

$db = new foo_mysqli('localhost', 'root', '', 'users');

echo 'Success... ' . $db->host_info . "\n";
settype($host, "string");
settype($user, "string");
settype($pass, "string");
try {
$conn = new PDO("mysql:host=$host;dbname=$db, $user, $pass");// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);$sql = "INSERT INTO users (fname, lname,email,username,password,SSN) VALUES ('$fname', '$lname', '$email', '$uname', '$password', '$ssn')";// use exec() because no results are returned
$conn->exec($sql);
echo "New record created successfully";
}

catch(PDOException $e)
{

echo $sql . "<br>" . $e->getMessage();
}

$db->close();
?>

Это избавило меня от одной из моих ошибок, однако я все еще получаю

(!) Исправляемая фатальная ошибка: объект класса foo_mysqli не может быть преобразован в строку в C: \ wamp \ www \ final_kk.php в строке 33

пожалуйста помогите … что я делаю не так?

0

Решение

Вы устанавливаете $db как пример foo_mysqli() Объект в этой строке:

$db = new foo_mysqli('localhost', 'root', '', 'users');

Позже

$conn = new PDO("mysql:host=$host;dbname=$db;username=$user;password=$pass", $user, $pass);

вы используете $db в качестве имени базы данных. Он заключен в строку в двойных кавычках, поэтому PHP попытается интерполировать его и подставить строку в строку подключения PDO. поскольку $db теперь объект, он терпит неудачу.

Непонятно, почему вы настраиваете объект, который расширяет MySQLi, когда вы все равно позже используете объект PDO.

Кроме того, вы не определили $host в области, где вы настраиваете ваше соединение PDO, так что PHP сообщает, что это не определено.

Поскольку вы знаете, что такое имена хоста и базы данных, вы можете просто сделать это:

    $conn = new PDO("mysql:host=localhost;dbname=users;", $user, $pass);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]