반응형
알아낼 수 없음, 오류의 원인 mysqli_stmt :: bind_param ()에 대한 매개 변수 3이 참조가 될 것으로 예상 됨, 값은 ...
PDO
$query = "INSERT INTO test (id,row1,row2,row3) VALUES (?,?,?,?)";
$params = array(1,"2","3","4");
$param_type = "isss";
$sql_stmt = mysqli_prepare ($mysqli, $query);
call_user_func_array('mysqli_stmt_bind_param', array_merge(array($sql_stmt, $param_type), $params));
mysqli_stmt_execute($sql_stmt);
또한 OOP 시도
OOP
$insert_stmt = $mysqli->prepare($query);
array_unshift($params, $param_type);
call_user_func_array(array($insert_stmt, 'bind_param'), $params);
$insert_stmt->execute();
그러나 동일한 오류, 지금은 매개 변수 2가 문제를 일으키고 있습니다.
그래서, $ params의 문제점은 무엇입니까? 값의 배열이 되려면 $ params가 필요합니다.
해결 방법
업데이트
이 답변은 구식입니다. Stacky의 답변과 같은 최신 PHP 버전에서는 스프레드 연산자를 사용하십시오.
PHP 문서에서 :
mysqli_stmt_bind_param ()을 call_user_func_array ()와 함께 사용할 때는주의해야합니다. mysqli_stmt_bind_param ()은 매개 변수를 참조로 전달해야하는 반면 call_user_func_array ()는 참조 나 값을 나타낼 수있는 변수 목록을 매개 변수로 받아 들일 수 있습니다.
예를 들면 :
call_user_func_array(array($stmt, 'bind_param'), refValues($params));
function refValues($arr){
if (strnatcmp(phpversion(),'5.3') >= 0) //Reference is required for PHP 5.3+
{
$refs = array();
foreach($arr as $key => $value)
$refs[$key] = &$arr[$key];
return $refs;
}
return $arr;
}
참조 페이지 https://stackoverflow.com/questions/16120822
반응형
'MySql' 카테고리의 다른 글
MySQL 두 개의 MYSQL 테이블을 동일한 열 이름으로 결합 (0) | 2021.01.03 |
---|---|
MySQL MySql에서 IN 절을 사용하는 다른 접근 방식 (0) | 2021.01.03 |
MySQL 모든 원격 사용자에 대해 SSL을 요구하는 방법 (0) | 2021.01.03 |
MySQL 이동 평균 MySQL 계산? (0) | 2021.01.03 |
MySQL PHP / MYSQL로 삭제 전 JavaScript 확인 (0) | 2021.01.03 |
댓글