Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: SQLSTATE[HY093]: Invalid parameter number

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: некорректный запрос
Goncharov
Отправлено: 30 Сентября, 2015 - 10:58:23
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Авг. 2015  


Помог: 0 раз(а)




День добрый, не могу победить ошибку SQLSTATE[HY093]: Invalid parameter number

Запрос с параметрами такой

PHP:
скопировать код в буфер обмена
  1.  public function SaveStep1($data)
  2. {
  3. $id = intval($data['id']);     
  4.  
  5. $query = $this->db->prepare("UPDATE `user_general_info` SET `soname` = :soname, `last_soname` = :last_soname, `name` = :name,
  6. `middle_name` = :middle_name, `birthday` = :birthday, `birthplace` = :birthplace, `city_code` = :city_code,`city` = :city, `street` = :street, `house` = : house, `corp` = :corp, `litera` = :litera, `flat` = :flat WHERE `id` = :id");
  7.  
  8. $query->bindParam(":soname", $data[0], PDO::PARAM_STR);
  9. $query->bindParam(":last_soname", $data[1], PDO::PARAM_STR);
  10. $query->bindParam(":name", $data[2], PDO::PARAM_STR);
  11. $query->bindParam(":middle_name", $data[4], PDO::PARAM_STR);
  12. $query->bindParam(":birthday", $data[5], PDO::PARAM_STR);
  13. $query->bindParam(":birthplace", $data[6], PDO::PARAM_STR);
  14. $query->bindParam(":city_code", $data[7], PDO::PARAM_STR);
  15. $query->bindParam(":city", $data[8], PDO::PARAM_STR);
  16. $query->bindParam(":street", $data[9], PDO::PARAM_STR);
  17. $query->bindParam(":house", $data[10], PDO::PARAM_STR);
  18. $query->bindParam(":corp", $data[11], PDO::PARAM_STR);
  19. $query->bindParam(":litera", $data[12], PDO::PARAM_STR);
  20. $query->bindParam(":flat", $data[13], PDO::PARAM_STR);
  21. $query->bindParam(":id", $data['id'], PDO::PARAM_INT);
  22.                                
  23. return $query->execute();
  24. }


Помогите, плиз, кто чем может. Перепроверил на 100 раз количество параметров совпадает.

(Отредактировано автором: 30 Сентября, 2015 - 10:59:58)

 
 Top
Мелкий Супермодератор
Отправлено: 30 Сентября, 2015 - 11:14:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Вручную проверять лениво - а вдруг там где a вместо а написано, понапишем пару строк кода:
PHP:
скопировать код в буфер обмена
  1. preg_match_all('~:[^",\s]++~', $s, $out);
  2. var_dump(array_filter(array_count_values($out[0]), function ($count) {return $count != 2;}));

Из-за простой регулярки ухватили лишние ::PARAM_*, ну да фиг с ними.
Зато явно показывает ошибку - элемент :house в тексте встречается только один раз. Смотрим в текст - и действительно, вот она ошибка.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB