gpt4 book ai didi

PHP 错误类的对象无法转换为字符串

转载 作者:行者123 更新时间:2023-11-29 23:20:32 25 4
gpt4 key购买 nike

我正在尝试创建一个连接到 mysql 数据库并将数据插入数据库的 PHP 文件。我收到这些错误:

( ! ) 可捕获的 fatal error :类 foo_mysqli 的对象无法转换为 ( ! ) 中的字符串 注意: undefined variable :第 21 行 C:\wamp\www\final_kk.php 中的主机

( ! ) 可捕获的 fatal error :类 foo_mysqli 的对象无法转换为第 21 行 C:\wamp\www\final_kk.php 中的字符串

第 21 行是 try 中的第一行。任何帮助,将不胜感激。谢谢!

<?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();
?>

这消除了我的一个错误,但我仍然得到

( ! ) 可捕获的 fatal error :类 foo_mysqli 的对象无法转换为第 33 行 C:\wamp\www\final_kk.php 中的字符串

请帮忙...我做错了什么?

最佳答案

您在此行中将 $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 现在是一个对象,因此失败。

当您稍后使用 PDO 对象时,尚不清楚为什么要设置一个扩展 MySQLi 的对象。

此外,您尚未在设置 PDO 连接的范围内定义 $host,因此 PHP 会将其报告为未定义。

既然您知道主机名和数据库名是什么,您就可以这样做:

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

关于PHP 错误类的对象无法转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27346776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com