0

我在 Bluemix 和 nodered 上使用 Dashdb 开发应用程序,我的 PHP 应用程序使用对 web 服务的调用来调用 node-red,每当我在 PHP 上的函数调用要插入表的节点并且字段 GEO_ID 为空时,应用程序就会失败,我理解这个问题,似乎没有通知第三个参数,我刚刚尝试检查参数并传递了类似 NULL 的内容,但它仍然无法正常工作。

见代码:

msg.account_id = msg.req.query.account_id;
msg.user_id = msg.req.query.user_id;
msg.geo_id=msg.req.query.geo_id;
msg.payload = "INSERT INTO ACCOUNT_USER (ACCOUNT_ID, USER_ID, GEO_ID) VALUES (?,?,?) ";
return msg;

在 Dashdb 组件上,我将参数设置如下:

msg.account_id,msg.user_id,msg.geo_id

第三个 geo_id 是问题,我尝试过类似下面的代码:

if(msg.req.query.geo_id===null){msg.geo_id=null}

或者

if(msg.req.query.geo_id===null){msg.geo_id="null"}

我得到的错误是以下错误:

dashDB 查询节点:错误:[IBM][CLI Driver][DB2/LINUXX8664] SQL0420N 在函数“DECIMAL”的字符串参数中发现无效字符。SQLSTATE=22018

如果有人可以帮助我,我真的很感激。谢谢,爱德华多·迪奥戈·加西亚

4

1 回答 1

1

是否有可能msg.req.query.geo_id设置为空字符串?

在这种情况下,上面的 if 语句都不会被执行,并且您将尝试将空字符串插入 DECIMAL 列。也许尝试这样的事情:

if (! msg.req.query.geo_id || msg.req.query.geo_id == '') {
   msg.geo_id = null;
}
于 2016-07-04T22:22:21.477 回答