1

我遇到了这个插入语句的问题。它位于 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 !== '')

注意:图片上传成功

4

3 回答 3

5

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

                $data->execute(array( ':autorID,' =>$autorID,
//                                             ^--- remove this comma
于 2013-10-24T20:25:44.120 回答
2
autorID,

没有定义

authorID

然而是。

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

做这个:

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

代替

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

你的代码会运行良好。

于 2013-10-24T20:26:01.913 回答
1

但我有所有的领域?

你还没有。

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

于 2013-10-24T20:26:15.660 回答