Я проверял свою обертку на подготовленные mysqli утверждения и наткнулся на то, чего я не ожидал. В моем гостевом столе first_name - это varchar [32] (в основном строка), а id - целое число. Моя функция использует getType для таких параметров, как $ first_name и $ id в приведенном ниже примере, для создания параметра $ types для метода bind_param. Я был готов заняться такими вопросами, как то, что происходит, когда $ id берется из ввода формы и фактически является строкой, или, что происходит, если somweone вводит строку, которая является числом, когда я понял, что это не имеет значения 0_0
$SQL = 'update guests set first_name = ? where id = ?';
$mysqli->execute($SQL, $first_name, $id);
все следующие случаи привели к успешной вставке:
$ id = "1";
$ first_name = "Frank";
$ types param был 'ss';
$ id = 1;
$ first_name = 3;
$ types param был 'ii';
Так в чем же дело?
редактировать:
call_user_func_array(array($statement, 'bind_param'), $bind_params);
Вы думаете, что способ, которым я называю bind_param, является фактором? В любом случае, я хотел бы знать, почему.