HY093:参数数量错误 - 位置
HY093: Wrong number of parameters - positional
我在 $q->execute
行收到 HY093 错误。
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined'
$stmt = "INSERT INTO `survey`(`user`,`notes`,`lat`,`lon`,`acc`,`timestampx`) VALUES(?,?,?,?,?,?)";
$q = sql::$db->prepare($stmt);
var_dump($data);
$q -> execute($data);
和我的 vardump 回声:
array(6) {
["user"]=>string(9) "Your Name"
["notes"]=>string(5) "Notes"
["lat"]=>string(10) "35.1338614"
["lon"]=>string(19) "-106.64091979999999"
["acc"]=>string(4) "8512"
["time"]=>string(13) "1442043552884"
}
当我将此数据复制并粘贴到 MySQL 时(将 ? 替换为带引号的字符串),它起作用了。
知道我可能遗漏了什么吗?
您正在混合使用 PHP 的两种工作方式。如果您想使用关联数组来提供绑定值,您的查询需要按名称引用它们,并使用冒号 (:
) 来指示这些是绑定变量:
$stmt = "INSERT INTO `survey`" .
"(`user`,`notes`,`lat`,`lon`,`acc`,`timestampx`) " .
"VALUES(:user, :notes, :lat, :lon, :acc, :time)";
或者,您可以保持 $query
不变,并在简单的位置数组中提供参数:
$data = array("Your Name",
"Notes",
"35.1338614",
"-106.64091979999999",
"8512",
"1442043552884");
我在 $q->execute
行收到 HY093 错误。
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined'
$stmt = "INSERT INTO `survey`(`user`,`notes`,`lat`,`lon`,`acc`,`timestampx`) VALUES(?,?,?,?,?,?)";
$q = sql::$db->prepare($stmt);
var_dump($data);
$q -> execute($data);
和我的 vardump 回声:
array(6) {
["user"]=>string(9) "Your Name"
["notes"]=>string(5) "Notes"
["lat"]=>string(10) "35.1338614"
["lon"]=>string(19) "-106.64091979999999"
["acc"]=>string(4) "8512"
["time"]=>string(13) "1442043552884"
}
当我将此数据复制并粘贴到 MySQL 时(将 ? 替换为带引号的字符串),它起作用了。
知道我可能遗漏了什么吗?
您正在混合使用 PHP 的两种工作方式。如果您想使用关联数组来提供绑定值,您的查询需要按名称引用它们,并使用冒号 (:
) 来指示这些是绑定变量:
$stmt = "INSERT INTO `survey`" .
"(`user`,`notes`,`lat`,`lon`,`acc`,`timestampx`) " .
"VALUES(:user, :notes, :lat, :lon, :acc, :time)";
或者,您可以保持 $query
不变,并在简单的位置数组中提供参数:
$data = array("Your Name",
"Notes",
"35.1338614",
"-106.64091979999999",
"8512",
"1442043552884");