我遇到这个插入语句有问题。它位于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 !== '')
注意:图片正在成功上传
答案 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)
但我有所有的领域?
你没有。
“参数未定义”表示您尝试绑定未在查询中定义的参数。因此,您需要仔细检查您的查询。你自己。不要求别人为你做这件事。