Я пытаюсь создать класс, который будет выполнять любой из нескольких хранимых процедур с любым количеством переменных
CALL spTestLogin(?,?)
например Теперь мне нужно привязать входные данные из моего массива, используя что-то вроде этого:
$ stmt-> bind_param ($ this-> paramTypes, $ this-> paramValues); // paramValues - это мой массив
Тогда, если это работает, я могу работать над получением моих результатов
Есть идеи
Вы должны сделать что-то вроде этого:
$params=array_merge( array($this->paramTypes), $this->paramValues ); call_user_func_array(array($stmt, 'bind_param'), $params);
что $this->paramTypes
– это строка в формате, требуемом mysqli_stmt::bind_param
– если нет, сначала нужно создать этот string
параметр.
Я не знаю out
работают ли в этом случае параметры out
или inout
.
mysqli_stmt::bind_param()
принимает переменное количество аргументов
Предполагая, что $this->paramTypes
также представляет собой массив, содержащий правильный тип символа для каждой переменной (один из «i», «d», «s», «b»), вы можете сделать что-то вроде
$params = $this->paramValues; array_unshift($params, implode($this->paramTypes)); call_user_func_array( array( $stmt, 'bind_param' ), $params);
По существу вы создаете массив параметров, которые вы обычно переходите на bind_param (), а затем выполняете вызов с помощью call_user_func_array()
Может быть, гораздо лучший способ сделать это
Редактирование : просто понял, что я был избит до этого, когда писал это, я оставлю этот ответ здесь на данный момент, если он будет интересен