mysqli: "变量数量与参数数量不匹配"
针对使用 mysqli 准备好的语句时遇到的问题,根本原因在于准备好的语句的语法不正确。正如回复中提到的,以下更正可以解决该问题:
$stmt = $mysqli->prepare( "SELECT DISTINCT model FROM vehicle_types WHERE year = ? AND make = ? ORDER by model" ); $stmt->bind_param('is', $year, $make); $stmt->execute();
准备声明时,用问号将输入数据的占位符括起来至关重要。然而,在原始语句中,make 变量的占位符被括在引号内,使其无法被识别为占位符。因此,问号的数量与 bind_param() 中变量的数量不匹配。
因此,更正后的准备好的语句通过删除 ? 周围的引号消除了这种差异。占位符,它允许使用bind_param()正确绑定输入变量。这确保了语句可以成功执行,产生期望的结果。
以上是为什么变量和参数不匹配会导致 mysqli 准备语句出错?的详细内容。更多信息请关注PHP中文网其他相关文章!