2 回答
TA贡献1886条经验 获得超2个赞
SQLSTATE [HY093]:参数号无效:未定义参数
不幸的是,这个错误不能描述与同一问题相关的一系列不同问题 - 绑定错误。它也没有指定错误的位置,因此您的问题不一定在执行中,而是已经“准备好”的sql语句。
这些是可能的错误及其解决方案:
参数不匹配 - 字段数与已绑定的参数不匹配。注意阵列中的数组。要仔细检查 - 使用var_dump($ var)。“ print_r ”不一定显示数组中的索引是否是另一个数组(如果数组中有一个值),而var_dump将会显示。
您尝试使用相同的绑定值进行绑定,例如:“:hash”和“:hash”。每个索引都必须是唯一的,即使逻辑上对两个不同的部分使用相同也是有意义的,即使它是相同的值。(它类似于常量,但更像是占位符)
如果您在语句中绑定了多个值(通常是“INSERT”的情况),则需要bindParam然后将bindValue绑定到参数。此处的过程是将参数绑定到字段,然后将值绑定到参数。
// Code snippet
$column_names = array();
$stmt->bindParam(':'.$i, $column_names[$i], $param_type);
$stmt->bindValue(':'.$i, $values[$i], $param_type);
$i++;
//.....
将值绑定到column_names或table_names时,您可以使用``但不是必需的,但请确保一致。
“单引号”中的任何值始终被视为字符串,不会被读取为要绑定的列/表名或占位符。
添加回答
举报