一个更复杂问题的简单例子...
变量有时被定义,有时不是。如果没有检查变量是否为空,是否有一种方法可以在不中断查询的情况下执行插入语句?PHP PDO MySql - 偶尔插入一个未定义的变量
$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
可能不存在。
为什么“没有检查变量是否为空”?该网站的主要基础发生了变化,将会有大量的变量检查。是的,我知道这不应该,但它是我继承的问题。
你能不只是传递'NULL'值的'_STR'类型?你会得到什么样的问题/ errormsg? – mario 2011-05-19 23:19:07
删除此问题。数据库模式中的错误导致查询无法正常工作。 PDO仍然会接受一个不存在的变量,并且默认为NULL。因此不需要这个问题。 – csi 2011-05-20 00:08:12
INSERT IGNORE?但是这需要修改插入语句。尽管在$ this-> db-> prepare(“INSERT INTO ...”)上执行搜索和替换操作会很容易,而且很危险..哈。 – mardala 2011-05-20 01:05:41