我使用PDO来执行sql
"INSERT INTO zhushou_cost_uid
(uid,imei,wmac,imsi,channel,supplier,uuid,brand,device_model,os,os_version,app_version,promotion_method,log_source,takeup_date)
VALUES
('863207010118070','863207010118070','02037ff459cb','460025323359694','sc-hjcx_ins_cgq','','�ܟ*c�1�]�y�.���#���h���!�o ��z�!Y�~��t8�KOd�xd]���sm����n%$����H����[?�p���M����','KINGSUN','KINGSUN S6','Android','4.1.2','3.2','','1','2015-11-29 03:21:21')",
PHP代码:
$db = $this->getWritableDB();
$stmt = $db->prepare($sql);
$exec = $stmt->execute();
uuid的数据是脏数据,在我们的日志中是
“uuid”:“ *c 1 ” y . # \u0015 h\u001a !\u001c \ u0013o \u0013 z \ u0000! Y〜t8KOdxd] \ u0001sm \ u0016 \ u0001n \ u0013%$ H [\ U0003?PM \ u001a“
我得到了结果
SQLSTATE [HY093]:参数号无效:没有绑定参数。
当我尝试将sql复制到终结器时,退出mysql登录状态。我认为uuid有问题。但我无法弄明白。谁能帮我?非常感谢你!
答案 0 :(得分:4)
$stmt = $db->prepare($sql);
由于您准备您的陈述,如果其中有任何内容可以解释为问号或冒号,则会将其视为占位符,然后您需要传递值适用于execute
步骤。由于这实际上不是您想要的,如果您不打算在其中添加占位符,请不要prepare
该声明。相反:
$db->exec($sql);
话虽如此,您怀疑是否在$sql
中传递了完整格式的SQL查询;也许你应该重写整个事情,这样你在查询中确实有实际的占位符,并将实际值分别传递给execute
。