无法在MySQL插入/更新功能上使用try catch

时间:2019-06-03 14:49:23

标签: php mysql function

我有三个功能(insert->用于将数据插入数据库,update->用于更新数据和save->使用try catch)

function save($record,$pk)
{
    try{        
        $this->insert($record);      
    }
    catch(Exception $e)
    {
        $this->update($record,$pk);
    }
}

function insert($record) {
    global $pdo;
    $keys = array_keys($record);

    $values = implode(', ', $keys);
    $valuesWithColon = implode(', :', $keys);

    $query = 'INSERT INTO ' . $this->table . ' (' . $values . ') VALUES (:' . $valuesWithColon . ')';

    $stmt = $pdo->prepare($query);

    $stmt->execute($record);
}

function update($record,$pk)
{
    global $pdo;
    $parameters=[];
    foreach ($record as $key => $value) {
        $parameters[]=$key .'= :'. $key;

    }

    $list=implode(', ',$parameters);
    $query="UPDATE $this->table SET $list WHERE $pk=:pk";
    $record['pk']=$record[$pk];
    $stmt=$pdo->prepare($query);


    $stmt->execute($record);

}

插入和更新功能正常工作。我想使用保存功能插入数据(如果不存在)并替换数据(如果存在相同的PK)。

我要插入的代码是:

if(isset($_POST['save'])){
    unset($_POST['save']);
    $department->save($_POST,'id');
}

问题是:如果没有重复值,它将插入数据库中。但是,如果存在重复的值(PK),则不会更新到数据库中。

我的数组包含

Array
(
    [id] => 1
    [title] =>test
    [description] =>description    
)

当我尝试通过表单更新时,它显示为空白。

P.S:如果我将“保存”替换为“更新”,则会在数据库中对其进行更新。但是尝试捕获“保存”不起作用

0 个答案:

没有答案