PHP PDO MySql - вставка с иногда неопределенной переменной - PullRequest
1 голос
/ 20 мая 2011

Упрощенный пример гораздо более сложной проблемы ...
Переменная иногда определяется, а иногда нет. БЕЗ проверки, если переменная пуста, есть ли способ выполнить оператор вставки без разрыва запроса?

    $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 может отсутствовать.

Почему "БЕЗ проверки, если переменная пуста"? Первичная основа сайта изменилась, и будет тонна переменной проверки. Да, я знаю, что не должно быть, но это проблема, которую я унаследовал.

Ответы [ 2 ]

0 голосов
/ 20 мая 2011

Вы всегда можете попытаться написать оболочку для bindParam, которая проверит вашу переменную, если ваша переменная определена.Если это так, то он идет вперед и bindParam, иначе он пропускает его.

Назовите это как

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

0 голосов
/ 20 мая 2011

Есть значение по умолчанию, если $ work-> end_date не существует?

Примерно так:

$end_date = empty($work->end_date)? 0 : $work->end_date
$stmt->bindParam(':end_date', $work->end_date, PDO::PARAM_STR);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...