【发布时间】:2015-02-05 10:42:45
【问题描述】:
我正在尝试创建一个连接到 mysql 数据库并将数据插入数据库的 PHP 文件。我收到这些错误:
(!) 可捕获的致命错误:类 foo_mysqli 的对象无法转换为 (!) 中的字符串 注意:未定义变量:C:\wamp\www\final_kk.php 第 21 行中的主机
(!) 可捕获的致命错误:类 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();
?>
好的....我根据 cmets 做了一些更改,现在我的代码如下所示:
<?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 的对象无法在第 33 行的 C:\wamp\www\final_kk.php 中转换为字符串
请帮忙...我做错了什么?
【问题讨论】:
-
不是你的解决方案,而是一个提示,从你的 pdo 构造函数中删除
;username=$user;password=$pass,它不需要! -
$db = new foo_mysqli...稍后...$conn = new PDO("…dbname=$db;…"— 创建$conn时,您在双引号字符串中使用$db变量,但$db变量是foo_mysqli对象没有__toString()。
标签: php mysql error-handling type-conversion