一個更復雜問題的簡單例子...
變量有時被定義,有時不是。如果沒有檢查變量是否爲空,是否有一種方法可以在不中斷查詢的情況下執行插入語句?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