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 :: Обьясните разницу prepare, bindValue, bindParam,
$query=$db->prepare("SELECT id,url FROM news WHERE url=:url");
$query->bindValue(":url",$url, PDO::PARAM_STR);
Нашел описание:
bindValue - биндим по значению входные параметры,
bindParam - биндим по ссылке входные параметры,
bindColumn - биндим по ссылке выходные параметры. Но для меня это Китайский язык.
PDO::PARAM_STR - с помощью этого флага вы говорите, что в :url будет только строка, то бишь тип данных string.
Отличие bindParam от bindValue в том, что первый метод принимает только ссылку, а второй универсален.
----- Хорошие дела улучшают настроение, делают жизнь счастливей, а людей человеками.
Sitnik
Отправлено: 26 Января, 2013 - 20:43:35
Новичок
Покинул форум
Сообщений всего: 17
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
halsoft
Получается что лучше использовать bindParam чем универсальный bindValue...
В некоторых случаях у меня bindValue не работает... тоже не могу понять почему.
Вот в этом примере выдает ошибку:
Все из-за PDO::FETCH_NUM, видимо bindValue не любит числа.
halsoft
Отправлено: 26 Января, 2013 - 20:55:24
Гость
Покинул форум
Сообщений всего: 94
Дата рег-ции: Нояб. 2012 Откуда: The Land of Chechens
Помог: 3 раз(а)
Sitnik пишет:
Все из-за PDO::FETCH_NUM, видимо bindValue не любит числа.
Не совсем правильно написали. FETCH_NUM используется, когда вы получаете данные от бд. В вашем случае нужно использовать PDO::PARAM_INT
----- Хорошие дела улучшают настроение, делают жизнь счастливей, а людей человеками.
Sitnik
Отправлено: 26 Января, 2013 - 21:00:51
Новичок
Покинул форум
Сообщений всего: 17
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
Так все таки - что лучше использовать bindValue или bindParam? (Добавление)
Цитата:
В вашем случае нужно использовать PDO::PARAM_INT
Спасибо! Точно везде стоит Фетч как это я его туда загнал )))
halsoft
Отправлено: 26 Января, 2013 - 21:09:54
Гость
Покинул форум
Сообщений всего: 94
Дата рег-ции: Нояб. 2012 Откуда: The Land of Chechens
Помог: 3 раз(а)
Sitnik пишет:
Так все таки - что лучше использовать bindValue или bindParam?
Пишут, что в некоторых бд переменные, которые были переданы через bindParam, используются как для отправки данных на бд, так и для получения. В таком случае нужно использовать только bindParam. Во всех остальных случаях, как видится, не принципиально какой из этих методов вы используете. Берите тот метод, который вам больше нравится и удобен ;)
----- Хорошие дела улучшают настроение, делают жизнь счастливей, а людей человеками.
Sitnik
Отправлено: 26 Января, 2013 - 21:11:48
Новичок
Покинул форум
Сообщений всего: 17
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
Ковырялся, ковырялся и в итоге везде удалил PDO::PARAM_STR и PDO::FETCH_NUM.
Все Равно не вижу в них смысла... (Добавление)
halsoft пишет:
Пишут, что в некоторых бд переменные, которые были переданы через bindParam, используются как для отправки данных на бд, так и для получения. В таком случае нужно использовать только bindParam. Во всех остальных случаях, как видится, не принципиально какой из этих методов вы используете. Берите тот метод, который вам больше нравится и удобен ;)
Спасибо!!! буду везде тыкать bindParam так как звучит БиндПарарааммм
halsoft
Отправлено: 26 Января, 2013 - 21:21:59
Гость
Покинул форум
Сообщений всего: 94
Дата рег-ции: Нояб. 2012 Откуда: The Land of Chechens
Помог: 3 раз(а)
PDO::FETCH_NUM везде удалять не надо, может у вас для получения данных используется?
А вот PDO::PARAM_STR вопрос строгости. Если вы поклонник строгой типизации, то пользуйтесь.
----- Хорошие дела улучшают настроение, делают жизнь счастливей, а людей человеками.
Sitnik
Отправлено: 26 Января, 2013 - 21:24:48
Новичок
Покинул форум
Сообщений всего: 17
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
halsoft пишет:
PDO::FETCH_NUM везде удалять не надо, может у вас для получения данных используется?
PDO::FETCH_NUM я удалил только при подготовке prepare, тоесть из:
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.