PHP 5.3 で PDO の問題があります。データベース用に MaxDB 7.8 を実行しています。これは、紙の上では MySQL と接続されているオープンソースのエンタープライズ データベースですが、そのようなものではありません。
この問題が MaxDB によって引き起こされているかどうかはわかりませんが、言及したかったのです。
ODBC ドライバーを介して準備済みステートメントを使用すると、$data 配列値のいずれかが空の文字列である場合、クエリが失敗することがわかりました。たとえば、1 つの値が必須 ('title') で、2 つの値がオプション ('author'、'version') であるダイアログ ボックスがユーザーに表示されます。ユーザーがオプションの値のいずれかを入力しないことを選択した場合、その配列要素は == "" になります。この場合、$sth->execute($data) は失敗し、null エラーが発生します。
setAttribute コマンド re: Nulls を 3 つの設定すべてで試しました。$value == null { $value = ""; }...そして、私が記事で見つけた他の多くのことは、すべて役に立ちませんでした。空の値を "(none)" のような文字列に手動で置き換えると、クエリは機能します。
とにかく、ここに詳細があります:
$data:
Array
(
[cust] => 1
[ftype] => 1
[title] => test
[author] =>
[version] =>
[folder] => 0
[modified] => 1337394898
[content] => "this is test content"
[status] => 1
[pages] => 1
)
$sql = "INSERT INTO FORMS (CUST, FTYPE, TITLE, AUTHOR, VERSION, FOLDER, MODIFIED, STATUS, CONTENT, PAGES) VALUES (:cust, :ftype, :title, :author, :version, :folder, :modified, :status, :content, :pages)";
$sth = $dbh->prepare($sql) or $this->error($sql, $dbh->errorInfo());
$sth->execute($data);
ご協力いただきありがとうございます。