我对包含的内容感到困惑,我认为,我不知道错误到底在哪里。
使用fluentpdo连接文件
<?php
error_reporting(E_ALL | E_STRICT);
include($_SERVER['DOCUMENT_ROOT'].'/Mark20/libs/FluentPDO/FluentPDO.php');
$pdo = new PDO("mysql:dbname=ummah", "pluto","admin");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$pdo->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
$fpdo = new FluentPDO($pdo);
//~ $software->debug = true;
?>
如果我用来插入如下数据: 的 Insert.php
<?php
include '../connect.inc.php';
function inReg(){
try{
$values = array('name' 'xyz', 'pwd' => '1234');
$query = $fpdo->insertInto('users')->values($values)->execute();
echo 'success';
return;
}catch (Exception $e) {
die ('File did not upload: ' . $e->getMessage());
}
}
?>
上面的东西没问题,只是在php文件中。我想要做的是使用一个类,如下所示: 连接文件是相同的。
DBInsert.php
<?php
include($_SERVER['DOCUMENT_ROOT'].'/Mark20/bin/connect.inc.php');
class DBInsert {
function Insert($table, $values){
try{
$query = $fpdo->insertInto($table)->values($values)->execute();
return 'success';
}catch (Exception $e) {
die ('File did not upload: ' . $e->getMessage());
}
}
}
?>
现在我正在创建上面的类的对象并试图像这样调用Insert函数: 的 test.php的
include($_SERVER['DOCUMENT_ROOT'].'/Mark20/bin/dao/DBInsert.php');
function Signup(){
$values = array('name' => 'xyz', 'pwd' => '1234');
$db = new DBInsert();
echo $db->Insert('users',$values);
}
Signup();
?>
因此,当我访问Test.php时,我收到以下错误:
注意:未定义的变量:E:\ Program Files \ Apache Software中的fpdo 第15行的Foundation \ Apache2.2 \ htdocs \ Mark20 \ bin \ dao \ DBInsert.php
致命错误:在非对象中调用成员函数insertInto() E:\ Program Files \ Apache Software 第15行的Foundation \ Apache2.2 \ htdocs \ Mark20 \ bin \ dao \ DBInsert.php
我是php的新手,也不是全新的:)。非常感谢您的帮助。
谢谢和问候 Adeeb
答案 0 :(得分:2)
默认情况下,全局变量不在函数范围内。你需要这样做:
function inReg(){
global $fpdo;
try{
$values = array('name' 'xyz', 'pwd' => '1234');
$query = $fpdo->insertInto('users')->values($values)->execute();
echo 'success';
return;
}catch (Exception $e) {
die ('File did not upload: ' . $e->getMessage());
}
}
或将$fpdo
作为参数传递给函数。