>  Q&A  >  본문

준비된 명령문에 대한 유형 정의 문자열을 동적으로 생성합니다.

저는 본질적으로 API에서 로컬 MySQL 데이터베이스로 데이터를 로드하는 스크립트를 작성하고 있습니다. 이 값은 API가 반환하는 내용에 따라 변경됩니다.

실제로 MySQL 데이터베이스에 행을 삽입하기 전까지는 모든 것이 잘 작동하고 있습니다. 특히, 준비된 문을 사용해야 한다는 것을 알고 있지만 변수를 준비된 문에 바인딩하려고 할 때 문제가 발생합니다. 다음 코드를 실행하려고 하면 다음과 같은 결과가 나타납니다.

으아아아

문제의 코드는 다음과 같습니다.

으아아아

저는 이 분야에 대해 약간 초보자라는 점을 자유롭게 인정합니다. 따라서 더 나은 방법에 대한 제안을 환영합니다. 그만한 가치가 있기 때문에 직접적인 사용자 입력이 없기 때문에 보안 문제가 이 문제를 해결하는 최선의 방법과 관련이 있다면 상대적으로 걱정하지 않습니다.

미리 감사드립니다!

P粉031492081P粉031492081233일 전311

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

  • P粉702946921

    P粉7029469212024-02-04 14:16:53

    bind_param() 실제로는 배열 인수가 아닌 가변 인수를 허용합니다. 하지만 최신 PHP에는 배열을 여러 스칼라 매개변수로 변환하는 구문이 있습니다.

    으아악

    이는 배열 요소를 별도의 인수로 전달하는 것과 같습니다.

    으아악

    하지만 배열에 몇 개의 요소가 있는지 모르면 곤란합니다.


    참고로 저는 mysqli 대신 PDO를 사용하는 것을 선호합니다. 아무것도 바인딩할 필요가 없으며 값 배열을 매개변수로 execute()에 전달하면 됩니다.

    으아악

    PDO가 더 쉽다고 생각해요. mysqli를 사용하는 이유는 조정이 필요한 2000년대 중반의 레거시 코드가 많기 때문입니다. 이제 막 시작했다면 레거시 코드가 없습니다. 따라서 먼저 PDO를 채택하는 것이 좋습니다.

    좋은 PDO 튜토리얼이 있습니다: https://phpdelusions.net/pdo/

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