Есть ли способ связать массив с mysqli prepare

Я пытаюсь создать класс, который будет выполнять любой из нескольких хранимых процедур с любым количеством переменных

Im использует php и mysqli

  • Мой класс перечисляет массив и строит строку на основе количества элементов, если они есть
  • что-то вроде этого 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()

Может быть, гораздо лучший способ сделать это

Редактирование : просто понял, что я был избит до этого, когда писал это, я оставлю этот ответ здесь на данный момент, если он будет интересен