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 :: Ошибка в кол-ве параметров в PDO

 PHP.SU

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


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

> Без описания
imper
Отправлено: 09 Июля, 2014 - 19:56:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Февр. 2012  
Откуда: Тольятти


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

[+]


вот запросик, с 6 параметрами
PHP:
скопировать код в буфер обмена
  1. $sql_osn = "
  2.          SELECT chat_tema.id,chat_tema.id_user,chat_tema.tema, chat_tema.date, chat_tema.img,profile_user.name_user, profile_user.family_user
  3.        FROM  friends_iv,chat_tema,profile_user
  4.        WHERE chat_tema.id NOT IN(':tems') AND (friends_iv.id_user_ot = ':id_us1' OR friends_iv.id_user_pol = ':id_us2') AND friends_iv.readed = 1
  5.        AND ( (friends_iv.id_user_ot = ':id_us3' AND friends_iv.id_user_pol =  chat_tema.id_user) OR (friends_iv.id_user_ot =  chat_tema.id_user AND friends_iv.id_user_pol = ':id_us4' ) )
  6.        AND profile_user.id = chat_tema.id_user
  7.        ORDER BY chat_tema.id DESC LIMIT :cursor,20";


вот банальная вставка

PHP:
скопировать код в буфер обмена
  1. $sth = $db->pdo_obj->prepare($sql_osn);
  2.          
  3.       $id_user = intval($_SESSION['id']);
  4.       $cur = intval($_POST['cursor']);
  5.       $tems = strval($_SESSION['connect_tems']);//тут строка типа 113,114,115
  6.  
  7.  
  8.             $sth->bindParam(':id_us1', $id_user , PDO::PARAM_INT);
  9.  
  10.          if($get_data_sel_msg == "fri")
  11.          {
  12.             $sth->bindParam(':tems'  , $tems     , PDO::PARAM_STR);
  13.             $sth->bindParam(':id_us2', $id_user , PDO::PARAM_INT);
  14.             $sth->bindParam(':id_us3', $id_user , PDO::PARAM_INT);
  15.             $sth->bindParam(':id_us4', $id_user , PDO::PARAM_INT);
  16.          }
  17.             $sth->bindParam(':cursor', $cur    , PDO::PARAM_INT);
  18.             $sth->execute();
  19.        
  20.   echo json_encode($sth->fetchAll());




ну и вот такая ошибочка вылазиет

Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in блаблабла on line 72

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

помогите пожалуйста


-----
Самое лучшее решение проблемы
самое простое
 
 Top
Мелкий Супермодератор
Отправлено: 09 Июля, 2014 - 20:07:04
Post Id



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


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


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




Зачем с именованными параметрами так наркоманить?
Раз нужен в запросе только один :id_us, один и используйте. Это именованные параметры, их можно использовать в одном запросе сколько угодно раз.
Для запроса
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT :id_us, :id_us, :id_us

id_us достаточно забиндить только один раз.

И банальная логика утверждает, что запрос у вас один и тот же, но при разных $get_data_sel_msg == "fri" биндится разное число параметров.


-----
PostgreSQL DBA
 
 Top
imper
Отправлено: 09 Июля, 2014 - 20:17:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Февр. 2012  
Откуда: Тольятти


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

[+]


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

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

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


-----
Самое лучшее решение проблемы
самое простое
 
 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