6

次のクエリがあります。

//query:
$query = "
    SELECT field1 FROM table 
    WHERE 
        field2 = :PARAM1
    AND ...
    AND fieldx = :PARAM1X";

//params:
$params = array();
$params [":PARAM" . $i] = NULL;

//prepare and execute:
$o = $cnx->prepare($query);
$o->execute($params);

NULLパラメータを値にバインドするにはどうすればよいですか? PDO は= :PARAM1IS NULL自動的に変更しますか? 明確にするために、計算しようとしてWHERE field = nullも mysql では機能せず、何も返されません。WHERE field IS NULL代わりに使用する必要があります。

それが私が今扱っていることです。

私の最初のテストは陽性であると言わざるを得ませんが、実稼働環境で 6 か月以内に副作用を発見したくありません...

4

2 に答える 2

1

からのコメントのPHP Docsように、

bindValue(':PARAM1', null, PDO::PARAM_INT);

また

$myNull = null;
$stmt->bindParam(':PARAM1', $myNull, PDO::PARAM_NULL);
于 2012-09-28T01:27:40.030 に答える
1

params を null 値にバインドする場合は、bindValues を使用する必要があります

bindValue(':param', null, PDO::PARAM_INT);

したがって、クエリの場合、次のようになります。

$sth = $dbh->prepare('SELECT field1 FROM table WHERE field2 = :PARAM1 AND fieldx = :PARAM1X');
$sth->bindValue(':PARAM1', null, PDO::PARAM_INT);

お役に立てれば。

于 2012-09-28T01:27:54.177 に答える