簡體   English   中英

PHP PDO MySql-插入偶爾有未定義的變量

[英]PHP PDO MySql - Insert with an occasionally Undefined Variable

一個更復雜的問題的簡化示例...
有時定義變量,有時未定義。 不檢查變量是否為空,有沒有一種方法可以執行插入語句而不會破壞查詢?

    $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可能不存在。

為什么“不檢查變量是否為空”? 該站點的主要基礎發生了變化,將進行大量的變量檢查。 是的,我知道不應該這樣,但這是我繼承的問題。

如果$ work-> end_date不存在,則具有默認值嗎?

像這樣:

$end_date = empty($work->end_date)? 0 : $work->end_date
$stmt->bindParam(':end_date', $work->end_date, PDO::PARAM_STR);

您總是可以嘗試為bindParam寫一個包裝,這將檢查您的變量是否已定義。 如果是,則繼續執行bindParam,否則將跳過它。

像這樣稱呼它

bindSafeParam(&$stmt, ':start_date', $work->start_date, PDO::PARAM_STR);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM