gpt4 book ai didi

Php PDO,类方法返回真而参数中的列名错误?

转载 作者:行者123 更新时间:2023-11-29 03:00:25 25 4
gpt4 key购买 nike

我创建了具有以下两种方法的类:连接方法如下:

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- 填充可以绑定(bind)到 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()

我遇到的问题:上面的方法对我来说工作正常但是如果我在查询中拼错了一个列名它不会将记录插入到表中(这是正确的),但它仍然返回真???虽然它应该返回 false?

我做错了什么我不明白,请帮助我解决这个问题。提前致谢。

最佳答案

你的方法 dbQuery仅当有效查询结果为 rowCount() <= 0 时才返回 false .当您发送无效查询时,例如列名拼写错误的查询,它会返回一个异常,特别是 $exc->getMessage();这不是 false .

尝试这样的事情:

if ($db->dbQuery($sqlInsert,$bindInputInsert) === true) {
// success
} ...

这将评估为 true 当且仅当 dbQuery准确返回 true - 不是 false $exc->getMessage(); .

关于Php PDO,类方法返回真而参数中的列名错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24604898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com