PHP + PDO: Bind null, если param пуст - PullRequest
       10

PHP + PDO: Bind null, если param пуст

3 голосов
/ 27 августа 2010

Я пытаюсь это (и все переменные PoST обрабатываются до того, как пользователь отправит их, никаких проблем с SQL-инъекцией):

$stmt = $con->prepare($sql);
$stmt->bindParam(":1", $this->getPes_cdpessoa());
$stmt->bindParam(":2", $this->getPdf_nupessoa_def());

Когда любой из этих переменных равен NULL, PDO плачет и не позволяетвыполнить мое утверждение, и в моей таблице я действительно разрешаю эти поля beign nullables.

Есть ли способ проверить, если значения являются пустыми, pdo просто связать NULL с тогда (и я имею в виду, умный способ вместоif (пусто ($ _ POST ['blablabla') ...) для каждого параметра?

Ответы [ 3 ]

5 голосов
/ 27 августа 2010

Попробуйте:

$stmt = $con->prepare($sql);
$stmt->bindParam(':1', $this->getPes_cdpessoa(), PDO::PARAM_NULL);
$stmt->bindParam(":2", $this->getPdf_nupessoa_def(), PDO::PARAM_NULL);

Также см .:

2 голосов
/ 27 августа 2010

bindParam нужна фактическая переменная для передачи ей, потому что она создает ссылку. Поэтому, когда ваши функции возвращают ноль, bindParam на самом деле ничего не может сделать.

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

0 голосов
/ 27 августа 2010

Альтернативный синтаксис работает:

$stmt = $con->prepare($sql);
$stmt->execute(array($this->getPes_cdpessoa(), $this->getPdf_nupessoa_def()));
...