【发布时间】:2020-12-15 07:01:57
【问题描述】:
在将我的问题标记为重复之前,请给出我能理解的任何示例或链接,我正在学习 PHP。希望你能理解。
我正在尝试使用 database_class 和插入函数插入数据。
这是我的数据库类。
//db_class.php
class database {
var $_sql = '';
var $_resource = '';
var $_result = '';
var $_insertId = '';
function connect() {
global $glob;
$host = $glob['localhost'];
$user = $glob['root'];
$pass = $glob[''];
$db = $glob['crestdb'];
try {
$this->_resource = new PDO('mysql:host='.$host.';port=3306;dbname='.$db.'', $user, $pass);
$this->_resource->query("SET SQL_BIG_SELECTS=1");
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
}
function insert($table, $dbFields) {
$field = array();
$value = array();
foreach ( $dbFields as $k => $v) {
//$v = addslashes(stripslashes($v));
$v = (stripslashes($v));
$field[] = $k;
$qmark[] =":".$k;
$value[":".$k] = $v;
}
$f = implode('`,`',$field);
$val = implode("','",$value);
$q = implode(",",$qmark);
$insertSql = "INSERT INTO `$table` (`$f`) VALUES ($q)";
$stmt = $this->_resource->prepare($insertSql);
$stmt->execute($value);
$_result=$this->_resource->lastInsertId();
$this->_insertId=$_result;
return $_result;
}
并且正在使用它 addcat.php
include( "db_class.php");
$obj = new database();
if(isset($_POST['submit'])){
$dbFields = array(
'cname' => $_POST['cname'],
'priority' =>$_POST['priority'],
'status' => $_POST['status'],
);
$obj->insert("category",$dbFields);
}
根据我的 TITLE 建议,使用这个我得到了错误。 我想我在 addcat.php 中犯了错误我是否错误地调用了这个函数?
这是错误:- 未捕获的错误:调用 C:\xampp\htdocs\def\database.class.php:82 中的字符串上的成员函数 prepare() 堆栈跟踪:#0 C:\xampp\htdocs \def\addcat.php(42): database->insert('category', Array) #1 {main} 在C:\xampp\htdocs\def\database.class.php 上线
【问题讨论】:
-
$_resource = ''所以它是一个字符串,你需要在使用->prepare之前更改它 -
您可能希望将
connect()更改为__construct(),以便在您实例化类时创建连接。 -
可能值得阅读php-fig.org/psr/psr-12 并检查您的代码,因为样式已经过时了。 (类名、
var的用法等)。也尽量避免使用global $glob;之类的东西。 -
@NigelRen,下次我一定会记住的。
标签: php database function class oop