2012-11-16 3 views
6

INSERT 쿼리와 함께 UUID()을 삽입하려고합니다.참조로 매개 변수 2를 전달할 수 없습니다. - uuid PDO

$handle->beginTransaction(); 
// Define query 
$query = "INSERT INTO users (users_uuid, type_id) VALUES (:uuid, :type_id)"; 
// Prepare statement 
$stmt = $handle->prepare($query); 
// Bind parameters 
$stmt->bindParam(':uuid',"SELECT UUID()",PDO::PARAM_STR); 
$stmt->bindParam(':type_id',1,PDO::PARAM_INT); 
// Execute query 
$stmt->execute(); 
$handle->commit(); 

이 쿼리 반환이 오류 라인 (51)에 ... 참조 매개 변수 (2)를 통과 할 수 없습니다. 그리고 그것은 라인을 가리키고 $stmt->bindParam(':uuid',"SELECT UUID()",PDO::PARAM_STR);

나는 여기서 무엇을 잘못하고 있나? 이 경우에 결합 할 필요가 없습니다

+0

[PHP 오류 : "참조로 매개 변수 2를 전달할 수 없습니다"] (https://stackoverflow.com/questions/13105373/php-error-cannot-pass-parameter-2- 참조로) –

답변

20

bindParam의 두 번째 인수는 참조로 전달되며 변수 여야합니다. 허용되지 않는 값을 직접 전달하고 있습니다.

UUID()을 매개 변수로 직접 입력하면 따옴표 붙은 문자열로 쿼리에 배치되고 UUID 값으로 계산되지 않으므로 쿼리에 직접 입력해야합니다.

1을 검색어에도 직접 입력 할 수 있습니다. 매개 변수 :type_id을 바인딩하는 동안 변수에 1을 할당하고 해당 변수를 두 번째 인수로 지정하십시오. 사용자 (users_uuid, TYPE_ID) 가치 (UUID를 (선택), 1)

먼저) UUID를 (얻을려고 유효한 MySQL의 쿼리 아닌 INTO

$type_id = 1; 
$stmt->bindParam(':type_id', $type_id, PDO::PARAM_INT); 
+0

잠깐, 기술 용어 부족으로 실종되었다. 하지만 코드에서 의미하는 바를 보여줄 수 있습니까? – fishcracker

+0

당신이 제안한 것처럼 지금은 작동하지만,'var_dump ($ stmt-> execute())'에서'NULL' 리턴을받습니다. – fishcracker

+0

실행 후'var_dump ($ stmt-> errorInfo()); 오류 메시지를 확인하십시오. – air4x

2

, 단순히 쿼리에 포함 : 당신이 이미으로

$query = "INSERT INTO users (users_uuid, type_id) VALUES (UUID(), :type_id)"; 

:type_id을 결합 ..then.

+0

내가 그 일을해도 여전히 같은 오류를 되 돌린다. en'선택 UUID()'를'789EF1A1-0063-44D4-B300-84CDD8D875A5'로 문자열로 바꾸되 행운은 없다. – fishcracker

+0

하지만'$ stmt-> bindParam (': uuid', "SELECT UUID()", PDO :: PARAM_STR);을 제거 했습니까? – Madbreaks

+0

그래, 그랬어. '$ stmt-> bindParam (': type_id', 1, PDO :: PARAM_INT);을 남겨 두었습니다. – fishcracker

0

당신의 INSERT, 다음 삽입 사용자 테이블의 값

관련 문제