如何解决使用数据库类和函数插入数据并获得错误“对字符串的成员函数Prepare的调用...数据库->插入“ category”,Array
在将我的问题标记为重复之前,请给出我能理解的任何示例或链接,我正在学习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);
}
根据我的标题建议,使用此方法我遇到了错误。 我认为我在addcat.php中犯了错误,我是否错误地调用了此函数?
这是错误:-未捕获的错误:在C:\ xampp \ htdocs \ def \ database.class.php:82中的字符串上调用成员函数prepare()堆栈跟踪:#0 C:\ xampp \ htdocs \ def \ addcat.php(42):数据库->插入('category',数组)#1 {main}在C:\ xampp \ htdocs \ def \ database.class.php中抛出
解决方法
通过在Google中进行大量搜索,我尝试为连接建立不同的类。 和@Felippe和@Aynber你们都是对的,我已经根据您的建议上了课。
class database{
var $_resource ;
var $_result = '';
var $_sql = '';
var $_insertId = '';
var $host = 'localhost';
var $user = 'root' ;
var $pass = '';
var $dbname = 'crestdb';
var $error;
public function __construct(){
// Set DSN
$dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname;
// Set options
$options = array(
PDO::ATTR_PERSISTENT => true,PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
// Create a new PDO instanace
try{
$this->_resource = new PDO($dsn,$this->user,$this->pass,$options);
}
// Catch any errors
catch(PDOException $e){
$this->error = $e->getMessage();
}
}
也许它仍然需要改进,但是现在对我有用!!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。