Особый статус
|
||||||
1 | ||||||
Number of variables doesn't match number of parameters in prepared statement22.10.2012, 12:05. Показов 4563. Ответов 14
Метки нет Все метки)
(
Собственно, код
(не бейте сильно, я самоучка, и с базами только начал работать)
0
|
|
22.10.2012, 12:05 | |
Ответы с готовыми решениями:
14
Fatal error - Invalid parameter number: number of bound variables does not match number of tokens' Invalid parameter number: number of bound variables does not match number of tokens
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
22.10.2012, 12:14 | 3 |
апострофы зачем вокруг параметров? ты их в строки превратил
1
|
Особый статус
|
|
22.10.2012, 12:35 [ТС] | 4 |
KOPOJI, да я это понял... Я не понял почему
DrobyshevAlex, спасибо! Я не знал что плейсхолдеры обходятся без кавычек. Если вставляются переменные, их нужно обрамлять) Кстати, теперь мне выводится сообщение, что mysqli_stmt_execute($query) возвращает объект, а не результат запроса. Я этой конструкцией только начал пользоваться. Не подскажите, как получить резалт?
0
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
22.10.2012, 12:42 | 5 |
Да ну? А если переменная - число? Обрамлять не нужно, хотя и можно. Просто будет не нужное приведение типов из строки к числу.
Отсюда и ответ на если обрамлять в кавычки, а параметр число? То мы получим строку из него. А это не оптимизировано ![]() http://php.net/manual/en/mysqli-stmt.execute.php а тут написано что boolean http://www.php.net/manual/en/mysqli-stmt.fetch.php
1
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
||||||
22.10.2012, 15:51 | 7 | |||||
ну там же пример есть
0
|
Особый статус
|
|
22.10.2012, 18:40 [ТС] | 8 |
DrobyshevAlex, какая-то хрень (я не вам, само собой
![]() Добавлено через 1 минуту И как быть, если неизвестно количество колонок, выбранных бд? Как неудобно ![]()
0
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
22.10.2012, 18:59 | 9 |
Ну юзай http://www.php.net/manual/en/m... result.php
Или юзай ООП стил вообще. И научись пользоваться мануалом ![]()
0
|
Особый статус
|
|
23.10.2012, 00:29 [ТС] | 10 |
DrobyshevAlex, в недоумении. После этой функции всё равно нужно разбирать чтобы получить нормальный массив. Как-то это допотопно, колхозно выглядит, и наверняка замедляет работу. Я снова что-то не так понял, или это действительно именно так работает?
И снова, что делать если я не знаю сколько колонок мне будет возвращено? Может быть можно обойтись без stmt и чистить переменные как-то иначе? (знаю что можно, но качественных материалов по этому вопросу не нашёл) Извините за такую "нубость", но я был бы очень благодарен за разъяснения... ![]() Добавлено через 6 минут Как было бы просто, если ли бы была возможность просто "Подготовить" строку и вставить её в обыкновенный mysqli_query. Добавлено через 20 минут Кстати, я оказываюсь прав! Вот статья на Хабре Защита от SQL-инъекций в PHP и MySQL Ну должно же быть решение...
0
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
||||||
23.10.2012, 00:37 | 11 | |||||
какое решение? чем вам не устаривает
![]() При чём тут количество столбцов вообще? У вас что скрипт по количеству столбцов определяет какой шаблон выводить? Так переделайте, это не правильно. Когда выводят, обычно знают что выводят и где ![]()
1
|
Особый статус
|
||||||
23.10.2012, 00:40 [ТС] | 12 | |||||
Меня (возмущает) Необходимость перебора
Ведь без stmt всё по-человечески...
0
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|||||||||||
23.10.2012, 00:45 | 13 | ||||||||||
С каких пор? Вы вообще читаете ссылки что я кдиаю?
http://php.net/manual/ru/mysql... -array.php Или просто предполагаете ![]() А как вы раньше выводили оО всегда в цикле выводили если записей много, а если одна просто без цикла присваивай.
1
|
Особый статус
|
||||||
23.10.2012, 01:53 [ТС] | 14 | |||||
Я просто нецензурно замучился с этим stmt... Так сложно реализовывать такие простые вещи...
Здесь нашёл, пусть и не объяснение принципа, который я у stmt так и не уяснил, но хотя бы пример... Кстати, я спрашивал, а откуда я узнаю сколько запрос вернёт столбцов? Вот там об этом тоже написано
![]() DrobyshevAlex, я понимаю, что уже замучил, но ещё вопрос (один) - это корректный код? Он обеспечит защиту от инъекции? Не по теме: Фууууууууффффф....
0
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
23.10.2012, 01:57 | 15 |
Да.
Зачем догадываться??? Там же примеры! И всё написано ![]() А по поводу хабры, не всегда нужно верить написанному. Я как то читал про сравнения mysql и mongodb. Так там такие противоречивые посты были, с точностью до на оборот ![]() Каждый пишет как он понимает, и не всегда это правильно.
1
|
23.10.2012, 01:57 | |
Помогаю со студенческими работами здесь
15
Что значит эта строка return number == 1 ? 1 : (Foo(number - 1) + Foo(number - 2); ?
How i can to send to Store Proc dynamic number of parameters? Поиск в ширину: Wrong number of procedure parameters Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |