2012-12-12 5 views
4

MySQLi에서 준비된 문을 사용하여 데이터를 삽입하는 방법을 배우려고합니다.루프에서 MySQLi 준비 문을 사용할 경우 bind_param은 언제 호출합니까?

비록 유사한 문을 반복적으로 효율적으로 실행할 수있는 준비 문이 있다고해도, MySQLi를 사용하여 루프에서 여러 문을 실행하는 예제를 찾을 수없는 것 같습니다. 나는 약, 특히 혼란 해요 다음

  • 내 루프 전이나 내 루프 전이나 bind_param
에 대한 호출 후 내 변수에 값을 할당 할 수 있는지 여부
  • 내부 bind_param를 호출 할 수 있는지 여부

    준비된 명령문에 대한 대부분의 자습서는 PDO를 사용합니다. PDO를 사용하면 매개 변수 값의 배열을 execute으로 전달할 수 있으므로 bindParam에 전화 할 필요가 없습니다. 이것은 MySQLi의 경우가 아닙니다.

    1. 할당 값 변수
    2. 제조 문
    3. 바인드 변수
    4. 실행을 확대
    5. :

      PHP 매뉴얼 mysqli_prepare 항목은 동작의 순서를 도시하는 예를 가지고

    위의 판단에 따르면, 루프 내에서 bind 문을 호출해야한다고 가정했습니다.

    1. 변수에
    2. 할당 값을 문장을 준비
    3. 바인드 변수
    4. 할당을 실행

      그러나, PHP 매뉴얼 mysqli_stmt_execute 항목은 다음 동작들의 순서를 도시하는 예를 가지고 변수에 대한 값

    5. 닫기

    이 예제에서 보여주지 않는 한 가지는 변수가 처음 선언 된 부분입니다. 신고되지 않은 변수를 bind_param에 전달하면 알림을 생성 할 수 있다고 생각했습니다. 나는 정의되지 않은 변수를 참조로 전달 했으므로 마침내 그 변수를 전달할 수 있다고 생각했습니다.

    질문 :
    이 작업 중 하나를 위해 다른 선호되어 있습니까? 아니면 그냥 당신이하고있는 일에 달려 있습니까? 하나 또는 다른 문제가 있습니까?

    참고 : 코드는 이미 MySQLi를 사용하며 PDO로 전환하고 싶지 않습니다. 전환은 현재이 프로젝트의 범위를 벗어납니다.

  • +0

    무엇을 반복하고 있습니까? 루프에서'bind_param'을 호출 한 다음'execute'를 호출 할 수 있습니다. 나는 내가 추측하는 문제를 완전히 이해하지 못하고있다. –

    +0

    * bind_param보다 먼저 변수를 설정해야합니다. 디버깅하기가 훨씬 쉽습니다. –

    +1

    내 혼란은 '가치에 의해 지나간'이라는 사고 방식에 머물렀다. 값을 변경 한 후에 다시 바인딩해야한다고 생각했습니다. – toxalot

    답변

    3

    는 매개 변수가 참조에 의해 전달되기 때문에 bind_param에 대한 호출 후 또는하기 전에 변수에 값을 할당 할 수 있습니다. 어느 쪽이든 작동합니다.

    변수가 으로 전달 된 경우 값을 변경할 때마다 변수를 바인딩해야합니다. 그러나 참조로 전달되기 때문에 한 번만 바인딩하면됩니다.

    단일 실행의 경우 작업 순서는 중요하지 않으며 값의 출처에 따라 다를 수 있습니다. 루프의 경우 반드시 루프 앞에 bind_param을 호출해야합니다.

    관련 문제