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

时间:2012-05-19 03:03:33

标签: php pdo odbc

我在PHP 5.3中遇到了PDO问题。我正在为我的数据库运行MaxDB 7.8 - 如果你还没有听说过,那么你并不孤单。它是一个开源的企业数据库,它与纸上的MySQL相连,但不是这样的。

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

我发现当通过ODBC驱动程序使用预准备语句时,如果任何$ data数组值为空字符串,则查询将失败。例如,向用户显示一个对话框,其中需要1个值('title'),但2是可选的('author','version')。如果用户选择不输入其中一个可选值,则该数组元素将为==“”。如果是这种情况,$ sth-> execute($ data)会失败,抱怨出现空错误。

我已经尝试了setAttribute命令re:Nulls on all 3 settings,我试过检查$ 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);

预先感谢您的协助!

1 个答案:

答案 0 :(得分:0)

经过几天的迷失,我放弃了这一点。如果有人找到解决方案,我很乐意听到,但我需要继续前进。

我的胶带/鸡丝解决方案是从绑定参数列表中删除可能为空的值,并将它们作为SQL语句的一部分包含在内。这样一来,如果事情发生了相同的'',那就不会吓坏了。爆炸。

感谢所有试过的人。