[PHP-users 13720] PEAR DBのプレースホルダを使用してのNULLの挿入
php-users@php.gr.jp
php-users@php.gr.jp
Tue, 4 Mar 2003 13:59:13 +0900 (JST)
お世話になります。室姫といいます。
PEAR DBライブラリのプレースホルダの機能を利用して
NULLを挿入したいと思いましたが、
うまくNULLが挿入できなく質問したく思います。
環境:
Windows2000
PHP 4.3.1
PostgreSQL 7.2.1 Windows Native版
TABLEは下記のような形で定義しております。
CREATE TABLE m_ppp(
ppp_id smallint,
ppp varchar(16)
);
php.ini-distと同一ディレクトリにあるPHP.exeを
下記のようにコマンドライン上にて実行しています。
C:\php4>php -q C:\php4\index.php
ソースの一部分を抜きだして提示していますが、
下記のような形で処理を定義し、
INSEER文にてNULLを挿入しようとすると、
うまくNULLが挿入できませんでした。
$sql = "insert into m_ppp( ppp_id, ppp ) values( ?, ? )";
$stmt = $dbHandle->prepare($sql);
$params = array(1, 'LNS');
$result = $dbHandle->execute($stmt, $params);
$insertNULL = "NULL";
$params = array(${insertNULL}, ${insertNULL});
# $params = array($insertNULL, $insertNULL);
# $params = array("", "");
$result = $dbHandle->execute($stmt, $params);
if($dbHandle->isError($result)){
print_r($params);
$resultNgCount++;
$dbHandle->rollback();
}
else{
$resultOkCount++;
$dbHandle->commit();
}
echo "[:m_ppp:]\n";
echo "$resultOkCount record insert OK\n";
echo "$resultNgCount record insert NG\n";
echo "\n";
⇒ スクリプトの実行結果は下記です。
Array
(
[0] => NULL
[1] => NULL
)
[:m_ppp:]
1 record insert OK
1 record insert NG
⇒ SELECT文の実行結果は下記です。
Administrator=# select * from m_ppp where ppp is null;
ppp_id | ppp
--------+-----
(0 rows)
なお、コマンドライン上にて下記INSERT文を実行しますとうまくNULLを挿入できました。
insert into M_PPP( ppp_id, ppp ) values( NULL, NULL );
Administrator=# select * from m_ppp where ppp_id is null;
ppp_id | ppp
--------+-----
(1 row)
Administrator=# select * from m_ppp where ppp is null;
ppp_id | ppp
--------+-----
(1 row)
PEAR DBライブラリのプレースホルダの機能を使用した場合の
NULLの挿入方法をご教授の程よろしくお願いします。
フレッツ始めるなら今 !キャンペーン実施中!
http://www.livedoor.com/flets/