复杂得多的问题的简化示例...
有时会定义变量,有时不会。在不检查变量是否为空的情况下,有没有办法在不中断查询的情况下执行插入语句?
$stmt = $this->db->prepare("INSERT INTO employment (user_id, start_date, end_date) VALUES (:user_id, :start_date, :end_date) ");
$stmt->bindParam(':user_id', $user->id, PDO::PARAM_INT);
$stmt->bindParam(':start_date', $work->start_date, PDO::PARAM_STR);
$stmt->bindParam(':end_date', $work->end_date, PDO::PARAM_STR);
$stmt->execute();
有时 $work->end_date
可能不存在。
为什么“不检查变量是否为空”?站点的主要基础发生了变化,并且会有大量的变量检查。是的,我知道那不应该,但这是我继承的问题。
最佳答案
您总是可以尝试为 bindParam
编写一个包装器,它会检查您的变量是否已定义。如果是,那么它会继续并 bindParam 否则它会跳过它。
这样称呼
bindSafeParam(&$stmt, ':start_date', $work->start_date, PDO::PARAM_STR);
关于PHP PDO MySql - 插入偶尔 undefined variable ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6065801/