배열을 함수의 매개 변수로 전달하려고하는데 문제가 있습니다. 여기에 함수가 있습니다.
$stmt->bind_param();
나는 이것을 연구하고이 사용할 수 있다는 것을 발견했다 :
이 내 개발 서버에서 잘 작동$stmt->bind_param(...$values);
(PHP 7.0.0)을,하지만 난 다른 서버 (PHP로를 입력 할 때 예기치 않은
구문 오류, 추가 연구시
')'기대, 내가 트라이 : 5 *), 나는 다음과 같은 오류가 발생했습니다 '.' D :
call_user_func_array(array($stmt, 'bind_param'), $values);
이 오류 얻었다 :
call_user_func_array()는 마찬가지로 * 파라미터 1, 제 배열 부재 유효한 클래스 이름이 아닌 유효한 콜백이거나
개체 예상 사이드 노트, 나는 단지 매개 변수를 입력 할 수 있고 모든 것이 잘 될 것이라고 알고 있지만, 나는 함수를 필요로하는 어떤 수의 매개 변수를 취할 수있는 함수가 필요하다. 당신이 bind_param
에 참조가 아닌 값을 전달하기 때문에
function updateId($id, $data){
$mysqli = dbConnect::connect();
$sm=array();
$values=array();
$dataString = array();
foreach($data as $column=>$value){
$dataString[] = ($column .'= ?');
$values[] = $value;
if(gettype($value)==="string"){
$sm[] = 's';
}elseif(gettype($value)==="integer"){
$sm[] = 'i';
}elseif(gettype($value)==="double"){
$sm[] = 'd';
}else{
$sm[] = 'b';
}
}
$dataString = implode(', ',$dataString);
$sm = implode('',$sm);
$prepString = "UPDATE $this->tablename SET $dataString WHERE id=$id";
array_unshift($values, $sm);
$stmt = $mysqli->prepare($prepString);
$stmt->bind_param(...$values);
$stmt->execute() or die($stmt->error);
$stmt->close();
$mysqli->close();
}
실제 코드를 보여 주면 더 나은 응답을 얻을 수 있습니다. – RiggsFolly
자명하다. _first 배열 멤버가 유효한 클래스 이름 또는 객체가 아니다. – AbraCadaver
도움이된다면 그것을 제공 할 수 있지만 발달 서버에서 작동한다. 모든 오류는 해당 행을 가리 킵니다. – Blaise