문제

해당 열에 삽입 할 열 이름과 값의 연관 배열과 테이블 이름 (간단한 문자열)을 기반으로 준비된 삽입 문을 생성하는 함수가 있습니다.

function insert ($param, $table) {
        $sqlString = "INSERT INTO $table (".implode(', ',array_keys($param)).') VALUES ('.str_repeat('?, ', (count($param) - 1)).'?)';
        if ($statement = $this->conn->prepare($sqlString)):
            $parameters = array_merge(array($this->bindParams($param), $param));
            call_user_func_array(array($statement, 'bind_param', $parameters));
            if (!$statement->execute()):
                die('Error! '.$statement->error());
            endif;
            $statement->close();
            return true;
        else:
            die("Could Not Run Statement");
        endif;
    }

내 문제는 $ this-> conn-> 준비 (클래스의 일부입니다. Conn은 새로운 MySQLI 객체이며 문제없이 작동합니다)는 거짓을 반환하지만 이유를주지는 않습니다!

다음은 준비 진술을 위해 구축 된 샘플 $ SQLString입니다.

INSERT INTO students (PhoneNumber, FirstName, MiddleInit, LastName, Email, Password, SignupType, Active, SignupDate) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)

이 매개 변수화 된 문에 문제가있는 사람이 있습니까? 준비 함수가 False를 반환 할 이유가 있습니까?

도움이 되었습니까?

해결책

나는 솔루션을이 답변에 복사하여 이것이 퓨어 트로 주어질 수 있습니다. 그렇지 않으면 질문은 "답이없는 질문"에 영원히 나타납니다. 이 답변을 표시하고 있으므로 포인트가 없습니다.

@andrew E. 말한다 :

방금 켜졌습니다 mysqli_report(MYSQLI_REPORT_ALL) 무슨 일이 일어나고 있는지 더 잘 이해하려면 - 내 필드 이름 중 하나가 틀렸다는 것이 밝혀졌습니다. - 당신은 그렇게 생각할 것입니다 prepare() 예외를 던지지 만 조용히 실패합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top