Задать вопрос
@deadmemoras

Ошибка при добавление в базу данных?

В общем, пишу скелет для регистрации, не поверите(поверите), но уже час паяюсь и перепробовал много вариантов кода, в общем:
(метод register, кину, чтобы понимали)
P.S: даю код с последними попытками, желательно, либо тыкнуть в чем проблема(ибо перепишу, а то все плохо тут).
$this->api_methods([
			    'GET' => function()
			    {
			           // $dbq = S::$db->getAll("SELECT * FROM articles");
			    },
			    'POST' => function()
			    {
			    	$login = $this->input['login'];
			    	$username = $this->input['username'];
			    	$email = $this->input['email'];
			    	$password = $this->input['password'];
			    	$img = $this->input['img'];
			    	S::$db->query("INSERT INTO user (login,username,email,password,img) VALUES('$login','$username','$email','$password','$img') ?u");
			    },
			]);

Ну и форма простенькая(самая обычная форма, данные считывается - выводил через print)

'S' - класс(обертка) для работы с бд

Ну и сама ошибка
Uncaught exception 'Exception' with message 'S: Number of args (0) doesn't match number of placeholders (1) in [INSERT INTO user (login,username,email,password,img) VALUES('DeadMemoras','Anton','deadmoras3011@mail.ru','','https://pp.vk.me/c636629/v636629912/21137/P447AoxVa6Q.jpg') ?u]' in C:\OpenServer\domains\minecraft.ru\model\S.php:516 Stack trace: #0 C:\OpenServer\domains\minecraft.ru\model\S.php(400): S->error('Number of args ...') #1 C:\OpenServer\domains\minecraft.ru\model\S.php(63): S->prepareQuery(Array) #2 C:\OpenServer\domains\minecraft.ru\controller\user.php(21): S->query('INSERT INTO use...') #3 [internal function]: user->{closure}() #4 C:\OpenServer\domains\minecraft.ru\model\api.php(16): call_user_func(Object(Closure)) #5 C:\OpenServer\domains\minecraft.ru\controller\user.php(23): user->api_methods(Array) #6 C:\OpenServer\domains\minecraft.ru\model\router.php(38): user->register() #7 C:\OpenServer\domains\minecraft.ru\model\router.php(24): Router->run('user', 'register', Array, Array) #8 C:\Ope in C:\OpenServer\domains\minecraft.ru\model\S.php on line 516
  • Вопрос задан
  • 530 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Rou1997
@Rou1997
?u"); - уберите, лишние символы.
Это не такая и простенькая форма, полей много.
Ответ написан
@MadridianFox
Web-программист, многостаночник
Number of args (0) doesn't match number of placeholders (1)

В ошибке говорится о том, что количество подставляемых значений ноль, а в запросе один плейсхолдер. Зачем нужен ?u в конце запроса?
Либо это там не нужно, либо вы забыли передать параметр, который подставится на место знака вопроса (или на место ?u, зависит от БД и драйвера работы с ней).

Кстати, почему вы вставляете данные из post в запрос без предварительной обработки? Именно для этого, отчасти, и предназначаются плейсхолдеры - они непозволят злоумышленнику передать в качестве одного из значений кусок sql,
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы