PHP PDO 参数 - 数组中的空字符串$data会导致查询失败


PHP PDO Params - Empty strings in $data array cause query to fail

我在使用 PHP 5.3 时遇到了 PDO 问题。 我正在为我的数据库运行 MaxDB 7.8 - 如果您没有听说过,那么您并不孤单。 它是一个开源企业数据库,在纸面上与MySQL连接,但与它完全不同。

我不确定这个问题是由MaxDB引起的,但我想提一下。

我发现当通过 ODBC 驱动程序使用预准备语句时,如果任何$data数组值为空字符串,我的查询将失败。 例如,向用户显示一个对话框,其中 1 个值是必需的("标题"(,但 2 个是可选的("作者"、"版本"(。 如果用户选择不输入可选值之一,则该数组元素将为 == "。 如果是这种情况,$sth->execute($data( 将失败,并抱怨空错误。

我已经尝试了 setAttribute 命令 re:所有 3 个设置上的空值,我尝试检查$value是否 == 空 { $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);

提前感谢您的帮助!

经过几天的浪费时间,我放弃了这个。 如果有人找到解决方案,我很想听听,但我需要继续前进。

我的胶带/鸡丝解决方案是从绑定参数列表中删除可能为空的值,并将它们作为 SQL 语句的一部分包含在内。 这样,如果某些事情发生等于",它就不会惊慌失措并爆炸。

感谢所有尝试过的人。