포착되지 않은 ValueError: mysqli_stmt::execute(): 매개변수 #1($params)은 목록의 배열이어야 합니다.
P粉502608799
P粉502608799 2024-02-03 17:09:57
0
1
409

이 두 쿼리를 통해 준비된 명령문을 사용하여 데이터베이스에 여러 값을 삽입하려고 하는데 두 쿼리 모두 실패하고 그 중 하나가 반환됩니다.

잡히지 않은 오류: 정의되지 않은 메서드 mysqli_stmt::bindValue() 호출

첫 번째 코드 또는

잡히지 않은 ValueError: mysqli_stmt::execute(): 매개변수 #1($params) 목록 배열이어야 합니다

두번째. list 而不是 array를 입력하면

이라고 표시됩니다.

문법 오류

참고모든 변수, 테이블 및 열 이름은 단순화된 변형입니다.

비슷한 질문을 많이 보았지만 그 중 어느 것도 내 질문에 대답해 주지 않았습니다. 이 "반복"도 아닙니다.

해결책이나 대안이 있는 사람이 있나요?

여기 두 가지 코드가 있습니다:

으아아아
if(isset($_POST['ID'], $_POST['atr1'])){

        $sql = $db -> prepare("INSERT INTO some_table (ID, atr_place) VALUES (':fir', ':sec')");
        
        $sql -> bindValue(':fir', $_POST['ID'],);
        $sql -> bindValue(':sec', $_POST['atr1'],);
        $sql -> execute();
}

P粉502608799
P粉502608799

모든 응답(1)
P粉373596828

오류 메시지에서 알 수 있듯이 mysqli a> 라이브러리를 사용하여 데이터베이스와 통신하고 있습니다. 그러나 귀하의 코드는 완전히 다른 라이브러리인 PDO를 사용하는 예제를 기반으로 한 것 같습니다. 일부 함수는 표면적으로 유사한 이름을 가지고 있지만 실제로는 API와 요구 사항이 다릅니다.

예를 들어, 일부 API 차이점은 다음과 같습니다.

  • mysqli는 명명된 매개변수를 지원하지 않으며 ?
  • 를 사용하여 지정된 익명 자리 표시자만 지원합니다.
  • PDO에는 바인딩파라미터(bindParam)와 바인드밸류(bindValue) 함수가 있고, mysqli에는 바인딩_파라미터(bind_param)
  • PHP 8.1 이전에는 mysqli가 Execute() 함수를 통해 직접 제공되는 매개변수 목록을 허용하지 않았습니다.

이 코드는 mysqli와 함께 사용해야 합니다:

PHP 8.1 이상을 사용하는 경우:

으아악

그렇지 않은 경우:

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!