>调用非对象上的成员函数 exec()<当我尝试调用 PEAR MDB2 类时
我有一个问题,我似乎无法自己解决,尽管脚本有点简单......我只是想写一些东西。在 MySQL 数据库(auto_increment id)中使用以下脚本:
<?php
// Create a valid MDB2 object named $mdb2
// at the beginning of your program...
require_once 'MDB2.php';
// Once you have a valid MDB2 object named $mdb2...
class addToDb extends MDB2 {
function __construct() {
$mdb2 =& MDB2::connect('mysql://************************');
if (PEAR::isError($mdb2)) {
die($mdb2->getMessage());
}
}
// 1) Add general information into trips
function addTrip() {
$title = $_POST['title'];
$author = $_POST['author'];
$description = $_POST['description'];
$date_start = $_POST['date_start'];
$date_end = $_POST['date_end'];
if(isset($title)) echo $title;
else echo "!!";
//$id = $mdb2->extended->getAfterID($id);
$sql = "INSERT INTO trips (title, author, description, date_start, date_end)
VALUES ($title, $author, $description, $date_start, $date_end)";
$affected =& $mdb2->exec($sql);
// Always check that result is not an error
if (PEAR::isError($affected)) {
die($affected->getMessage());
}
}
// Disconnect
function disconnectDb() {
$mdb2->disconnect();
}
}
?>
这就是我想要调用对象的方式:
$input = new addToDb();
$input->addTrip();
$input->disconnectDb();
我尝试了很多事情,包括只执行代码而不将其放入类中,总是出现相同的错误:
Fatal error: Call to a member function exec() on a non-object in /www/htdocs/w007bba1/v3/_class/_general/_db.php on line 36
第 36 行代表
$affected =& $mdb2->exec($sql);
我的addToDb 类。如果有人能告诉我我的脚本哪里不正确,我将不胜感激,到目前为止我在其他帖子中找不到任何帮助......
问候! 斯托基
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
正如错误所说,似乎
$mdb2
不是对象。您的问题是您初始化了
$mdb2
,但该变量仅在__construct
范围内可用。您必须将其存储在类变量中才能在addTrip()
中使用它。Seems as if
$mdb2
is no object, AS THE ERROR SAYS.Your problem is that you initialize
$mdb2
, but the variable is only available in the scope of__construct
. You have to store it in a class variable to be able to use it inaddTrip()
.PDO 使用 Cpanel 用户和密码,而不是 DB 用户和密码。
PDO uses Cpanel user and password instead of DB user and password.