>  Q&A  >  본문

포착되지 않은 ValueError: mysqli_stmt::execute(): 매개변수 #1($params)은 목록의 배열이어야 합니다.

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

잡히지 않은 오류: 정의되지 않은 메서드 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粉502608799P粉502608799233일 전363

모든 응답(1)나는 대답할 것이다

  • P粉373596828

    P粉3735968282024-02-04 14:00:15

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

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

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

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

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

    으아악

    그렇지 않은 경우:

    으아악

    회신하다
    0
  • 취소회신하다