我对 PHP 5.3 有一个 PDO 问题。我正在为我的数据库运行 MaxDB 7.8 - 如果您还没有听说过,那么您并不孤单。它是一个在纸面上与 MySQL 连接的开源企业数据库,但与它完全不同。
我不确定这个问题是由 MaxDB 引起的,但我想提一下。
我发现当通过 ODBC 驱动程序使用准备好的语句时,如果任何 $data 数组值是空字符串,我的查询就会失败。例如,向用户显示一个对话框,其中 1 个值是必需的('title'),但 2 个是可选的('author'、'version')。如果用户选择不输入可选值之一,则该数组元素将是 == ""。如果是这种情况, $sth->execute($data) 会失败,并抱怨 null 错误。
我已经尝试了 setAttribute 命令 re: Nulls on all 3 settings,我尝试检查 $value == null { $value = ""; }...以及我在文章中发现的许多其他内容,均无济于事。如果我用“(无)”之类的字符串手动替换任何空值,则查询有效。
无论如何,这是细节:
$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);
提前感谢你的帮助!