> 데이터 베이스 > MySQL 튜토리얼 > MySQLi Bind Param 오류: 내 유형 문자 수가 내 자리 표시자와 일치하지 않는 이유는 무엇입니까?

MySQLi Bind Param 오류: 내 유형 문자 수가 내 자리 표시자와 일치하지 않는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-29 10:05:13
원래의
356명이 탐색했습니다.

MySQLi Bind Param Error: Why Does My Number of Type Characters Mismatch My Placeholders?

바인드 매개변수 오류: 숫자 불일치

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿