PDO:参数号无效:未定义参数。但我有所有的领域?

时间:2013-10-24 20:21:31

标签: php mysql pdo

我遇到这个插入语句有问题。它位于if语句中,在用户成功上载和映像后使用。

                $contenido = $filename;
                $db = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
                $data = $db->prepare("INSERT INTO publicaciones (autorID, autorNombre, nombre, claseDeContenido, contenido, palabras, etiquetas, fecha) VALUES (:autorID, :autorNombre, :nombre, :claseDeContenido, :contenido, :palabras, :etiquetas, :fecha)");
                $data->execute(array( ':autorID,' =>$autorID,
                            ':autorNombre' =>$autorNombre,
                            ':nombre' => $nombre,
                            ':claseDeContenido' => $claseDeContenido,
                            ':contenido' => $contenido,
                            ':palabras' =>$palabras,
                            ':etiquetas' => $etiquetas,
                            ':fecha' => $fecha));

错误是

PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in .... on line 215

但是脚本中的变量名没有变化,有八个参数要插入,我发送的是8.我已经检查了 $ fecha ,这是在线 215 ,绝对是被发送的。

它可能是什么?

如果没有所有字段存在于各自的变量中,则不会运行此函数。

if($autorID !== '' || $autorNombre !== '' || $nombre !== '' || $claseDeContenido !== '' || $contenido !== '' || $palabras !== '' || $etiquetas !== '' || $fecha !== '')

注意:图片正在成功上传

3 个答案:

答案 0 :(得分:5)

:autorID的引用中有一个多余的逗号:

                $data->execute(array( ':autorID,' =>$autorID,
//                                             ^--- remove this comma

答案 1 :(得分:2)

autorID,

未定义

authorID
然而,

使用逗号分隔列名,但逗号不能是您在查询中执行的数组中列名的一部分。

这样做:

$data->execute(array( ':autorID' =>$autorID

而不是

$data->execute(array( ':autorID,' =>$autorID

你的代码运行正常。

答案 2 :(得分:1)

  

但我有所有的领域?

你没有。

“参数未定义”表示您尝试绑定未在查询中定义的参数。因此,您需要仔细检查您的查询。你自己。不要求别人为你做这件事。