> 백엔드 개발 > PHP 튜토리얼 > mysqli_stmt::bind_param()이 '매개변수 ... 참조로 예상되며 값이 지정됨'을 발생시키는 이유는 무엇입니까?

mysqli_stmt::bind_param()이 '매개변수 ... 참조로 예상되며 값이 지정됨'을 발생시키는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-05 09:11:15
원래의
662명이 탐색했습니다.

Why Does mysqli_stmt::bind_param() Throw

mysqli bind_param() 오류: 참조 대신 값 전달

"mysqli_stmt::bind_param()에 대한 매개변수 3 오류는 다음과 같습니다. 참조, 값 제공"은 다음과 같은 경우에 발생합니다. mysqli_stmt::bind_param()에는 해당 값에 대한 참조 배열 대신 값 배열이 전달됩니다.

PDO 코드

제공된 PDO 코드에서:

$params = array(1,"2","3","4");
로그인 후 복사

$params 배열에는 해당 값에 대한 참조가 아닌 값이 포함되어 있습니다. 이 문제를 해결하려면 &를 사용하여 참조를 생성하세요.

$params = array(1,&"2", &"3", &"4");
로그인 후 복사

OOP 코드

마찬가지로 OOP 코드에서:

array_unshift($params, $param_type);
로그인 후 복사

이 줄은 $param_type 문자열 앞에 추가됩니다. $params 배열의 시작 부분에 추가되지만 매개변수 값에 대한 참조는 생성되지 않습니다. 참조를 생성하려면 & 문자를 사용하십시오.

array_unshift($params, $param_type);
foreach ($params as $key => $value) {
    $params[$key] =& $value;
}
로그인 후 복사

확산 연산자를 사용하는 대체 솔루션(PHP 5.6)

PHP 버전 5.6 이상에서는 스프레드 연산자(... ) 참조를 수동으로 생성할 필요 없이 $params 배열을 개별 인수로 전달하려면:

mysqli_stmt_bind_param($sql_stmt, $param_type, ...$params);

$insert_stmt->bind_param($param_type, ...$params);
로그인 후 복사

참조를 전달하거나 스프레드 연산자를 사용하면 mysqli_stmt::bind_param()이 매개변수 값에 대한 참조 배열을 수신하여 오류를 해결할 수 있습니다.

위 내용은 mysqli_stmt::bind_param()이 '매개변수 ... 참조로 예상되며 값이 지정됨'을 발생시키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿