![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
0Z0NE |
|
|||
![]() HEY4 ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 25.4.2012 Репутация: нет Всего: нет |
Доброго времени суток Уважаемые Знатоки, с Вашего позволения немного предыстории.
В одной моей теме закидали меня некоторые пользователи всякими невкусностями по поводу использования MySQL библиотеки, пробую понять синтаксис и принцип работы MySQLi, и вот первые непонятки. Есть таблица в ней аж ![]()
Просьба тыкнуть носом в ошибку... З.Ы. комментарии далел для себя посему на них не обращайте внимания, хотя если в них уложен не правильный смысл то скажите об этом, буду презнателен. Это сообщение отредактировал(а) 0Z0NE - 5.4.2013, 23:24 |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: нет Всего: 55 |
Неужели слово "result" в функции mysqli_stmt_bind_result() вам ни о чем не говорит? Особенно то, что некий "result" случается еще до запроса в базу, как такового.
Параметры в подготовленній запрос вставляются функций mysqli_stmt_bind_param(), а bind_result — это для привязки переменных. В переменные, указанные в bind_result, будут помещены значения полей из результата запроса (полей текущей строки при переборе через fetch). Ошибка возникала потому, что вы не задали значения через bind_param при присутствующем в запоросе вопросительном знаке (с которым СУБД, очевидно, не в курсе что делать). Добавлено через 3 минуты и 54 секунды
В bind_param можно вставлять данные напрямую. Это сообщение отредактировал(а) Arantir - 6.4.2013, 00:20 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 14 Всего: 260 |
хм. ну, обычный путь: prepare + bind_param + execute. не уверен, что stmt_execute хоть в каком-то виде будет оправлять на сервер для подготовки.
не, серьезно, ты что-то наплутал. bind_result — это указать в какие переменные запихивать поля каждой записи результата после очередного fetch. то есть так: prepare + bind_param + execute + bind_result + fetch Добавлено через 22 секунды долго писал ![]() |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: нет Всего: 55 |
Да, точно, при исправлении bind_result на bind_param надо не забыть поместить его до execute.
В общем, вот http://www.php.net/manual/ru/mysqli-stmt.bind-param.php (на русском даже) -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
0Z0NE |
|
|||
![]() HEY4 ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 25.4.2012 Репутация: нет Всего: нет |
Хм ... переделал вот так, и всеравно без результатно... выводит 1, что есть данными переменной $user_id...
Кстати насколько я понял бинд парам какраз таки для записи в БД, и подтвердили мои подозрения обязательность указания типа переменных ... Хотя могу ошибаться... Это сообщение отредактировал(а) 0Z0NE - 6.4.2013, 13:36 |
|||
|
||||
Arantir |
|
||||||||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: нет Всего: 55 |
Что-то вы сильно все напутали. Даже хуже, чем в первом посте.
1 — это булевое TRUE, которое вы сами же запихнули в эту переменную вот тут:
Отправка в базу — это только execute. Типы переменных указываются для их правильной фильтрации. Ведь строку нельзя записать числом, double нельзя записать в integer, а двоичные данные только как двоичные и можно записать. Чтобы база лишний раз не ругалась на все это, то тип указывается еще до отправки данных.
Получение данных в старом стиле:
Как видно из последнего примера, все различия, помимо названий функций, только в prepare и bind_param. Остальные действия точно такие же, как при использовании mysql. Это сообщение отредактировал(а) Arantir - 6.4.2013, 15:54 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
||||||||
|
|||||||||
0Z0NE |
|
|||
![]() HEY4 ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 25.4.2012 Репутация: нет Всего: нет |
Arantir, Спасибо что-то потихоньку проясняеться, только вот не понял за что ругаеться на второй пример РНР ... почему-то ругаеться на строчку $result = mysqli_stmt_get_result($stmt); почитал требует идентификатор который возвращает mysqli_stmt_init(), пробовал конструкцию типа:
но не помогло, пробовал подставить вместо $db переменную $query но тож не помогло (Дааа .. танцы с бубном вокруг новых функций всегда были неотъемлемым ритуалом обучения новичков ![]() Пересмотрел оба варианты, Ваш и свой, функции те-же переменные ... почти те-же .. разница получеться лишь в том что в mysqli_stmt_bind_result($stmt, $user_login); у меня просто переприсваиваеться $user_id ... ![]() ![]() Всем спасибо пойду дальше пробовать, если у кого есть учебничек а-ля MySQLi с нуля прошу кинуть в личку)) ато зафлужу глупыми вопросами весь форум ![]() Это сообщение отредактировал(а) 0Z0NE - 6.4.2013, 18:14 |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |