PHP PDO MySql - 插入偶尔 undefined variable

标签 php mysql pdo

复杂得多的问题的简化示例...
有时会定义变量,有时不会。在不检查变量是否为空的情况下,有没有办法在不中断查询的情况下执行插入语句?

    $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/

相关文章:

javascript - Ajax 加载脚本上的 Jquery 变量作用域

PHP PDO bindParam 返回 NULL

php - 从多维数组中搜索和删除

php - 了解 pdo mysql 事务

php - 如果值已存在,则检索 id PDO

php - 升级到 PHP 7 后的 Mysql PDO automagic utf8 转换

php - Prestashop 1.6.1.11 (500) 内部服务器错误(关联)字节耗尽

Mysql - 按大于或小于当前时间的日期对记录进行分组 now() mysql

mysql - Rails ActiveRecord WHERE EXISTS 查询

java - 为什么 ResultSet 不为空,但我无法从 ResultSet 中获取数据