바인드 매개변수 오류: 숫자 불일치
MySQLi 준비된 명령문에서 유형 문자(예: 문자열의 경우 "s") 수 Bind_param 메소드는 SQL의 자리 표시자(예: "?") 수와 일치해야 합니다. query.
문제 요약
코드의 bind_param 호출이 준비된 문의 자리 표시자 수와 일치하지 않기 때문에 오류가 발생합니다.
$stmt->bind_param("s,s,s,s,s,s,s,...", $project_name, $status, ...);
이는 양식 입력 수(65)와 query.
올바른 형식
bind_param의 올바른 형식은 다음과 같습니다.
$stmt->bind_param("type_characters", $variable1, $variable2, ...);
여기서 "type_characters"는 한 문자를 포함하는 문자열입니다. 쿼리의 자리 표시자별로, 데이터 유형을 나타냅니다. bound.
유형 문자 계산
불일치를 방지하려면 수동으로 또는 정규 표현식을 사용하여 자리 표시자 수를 계산하는 것이 좋습니다. 귀하의 경우 준비된 명령문에 65개의 자리 표시자가 포함되어 있는지 확인해야 합니다.
예
65개의 자리 표시자가 있는 수정된 준비된 명령문의 경우 올바른 바인딩_param 호출은 다음과 같습니다. be:
$stmt->bind_param("sssssssssssssssssssssssssssssssssssssssssssssssssssssssss", $project_name, $status, ...);
팁
올바른 바인딩을 보장하려면 SQL 쿼리에서 자리 표시자 수를 계산하는 다음 방법을 사용하는 것이 좋습니다.
function countPlaceholders($sql) { return substr_count($sql, '?'); }
위 내용은 MySQLi Bind Param 오류: 내 유형 문자 수가 내 자리 표시자와 일치하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!