【发布时间】:2014-08-27 14:23:08
【问题描述】:
我创建了具有以下两种方法的类: 连接方法如下:
private function connect(){
try{
$this->con = new PDO("mysql:host={$this->host};dbname={$this->db_name};charset=utf8", $this->db_user, $this->db_pass);
$this->con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->con->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$this->con->setAttribute(PDO::ATTR_EMULATE_PREPARES, TRUE);
}catch(PDOException $ex){
return $ex->getMessage();
}
}
这里是插入、更新、删除和查找表中记录的方法:
public function dbQuery($sql,$bindVars=array()){
try{
$this->connect();
$statement = $this->con->prepare($sql);
$statement->execute($bindVars);
if($statement->rowCount() > 0){
return true;
}
else{
return false;
}
}catch(PDOException $exc){
return $exc->getMessage();
}
$this->con = null;
现在我正在使用这种方式(例如)将记录插入到我的表中:
1- 填充可以绑定到 dbQuery 方法的数组;
$bindInputInsert = array(
':empSno'=>$empSno,
':fromCourt'=>$fromCourt,
':toCourt'=>$toCourt,
':transferDate'=>$transferDate,
':transferFromDate'=>$transferFromDate,
':causeOfTransfer'=>$causeOfTransfer,
':departmentDetails'=>$departmentDetails,
':orderNo'=>$orderNo
);
2- 现在准备这样的插入查询:
$sqlInsert = "INSERT INTO empoffices (
empSno,
fromCourt,
toCourt,
transferDate,
transferFromDate,
causeOfTransfer,
departmentDetails,
orderNo
)
VALUES(
:empSno,
:fromCourt,
:toCourt,
:transferDate,
:transferFromDate,
:causeOfTransfer,
:departmentDetails,
:orderNo
)";
3- 将查询发送到 dbQuery 方法并插入测试记录?
if($db->dbQuery($sqlInsert,$bindInputInsert)){
echo($method->sucMsg("Info: - "," Record saved successfully"));
}
else {
echo($method->errorMsg("Error: - ","Record not saved"));
}//end else insert()
我面临的问题: 上面的方法对我来说很好,但是如果我在查询中拼错了一个列名,它不会将记录插入到表中(这是正确的),但它仍然返回 true ???虽然它应该返回假?
我做错了什么我不明白,请帮助我。提前致谢。
【问题讨论】:
标签: php mysql class methods pdo