2013-06-26 3 views
0

PDO에 대한 바인드를 생성하는 함수를 설정하려고합니다.PDO : 생성 된 바인드가 작동하지 않습니다.

바인드는 함수에 의해 생성되고 배열로 컴파일됩니다.

그런 다음 foreach 루프를 통해 값 (구문문)을 구문 분석하려고했지만 정의되지 않은 속성을 계속 throw합니다.

루프는 다음과 같습니다

$stmt -> bindValue(':ID', $ID, PDO::PARAM_STR); 
$stmt -> bindValue(':Name', $Name, PDO::PARAM_STR); 
$stmt -> bindValue(':Test', $Test, PDO::PARAM_STR); 

그러나이 작동하지 않습니다 ... 이유 :

foreach($binds as $key => $bind){ 
    $stmt -> $bind; 
} 

출력 무엇입니까?

오류 메시지 :

Notice: Undefined property: PDOStatement::$bindValue(':ID', $ID, PDO::PARAM_STR)

+0

** 정확한 ** 오류 메시지를 표시하십시오. '$ stmt -> $ bind;'--- 그것은 의미가 없습니다. – zerkms

+1

$ bind의 인스턴스가 "bindValue (': ID', $ ID, PDO :: PARAM_STR);"처럼 보이기 때문에 $ stmt 객체에 직접 연결할 수 있습니다. –

+0

@Mike Purcell : LOL 무엇? 당신은 그렇게 할 수 없습니다 :-) – zerkms

답변

2

내가 PDO에 대한 바인딩을 생성하는 기능을 설정하기 위해 노력하고있어 (모든 것을 않습니다).

필요하지 않습니다. PDO에는 이미 execute()와 같은 함수가 있습니다. 따라서 루프 대신 그냥 실행하십시오

$stmt->execute($binds); 
+0

그럼'Warning : PDOStatement :: execute() [pdostatement.execute] : SQLSTATE [HY093] : 잘못된 매개 변수 번호 : 매개 변수가 정의되지 않았습니다. '라는 메시지가 나타납니다. 나는 루프가 작동 할 것으로 기대했다. 왜냐하면 직접 출력되는 것을 작동 시키면 작동하기 때문이다 :/ –

+0

실제로, $ binds를 [key] = 'value'배열을 출력하는 my $ 값으로 변경했다. 그래서 이것은 완벽하게 안전하고 주사를 방지하기 위해 그것을 묶어 놓았습니까? –

관련 문제