Не работает num_rows в mysqli, если использовать IN

Фанат

oncle terrible
Команда форума
речь не о том, что "можно" или "лень". А о том, что библиотека с подстановкой декларируется, как НЕ ТРЕБУЮЩАЯ приведений.
 

Mols

Новичок
Вроде в топике речь не о библиотеке.
З.Ы.
Относительно требующая или нет - честно говоря я никаких противоречий не вижу. Библиотека честно отрабатывает со всеми необходимыми типами данных. Где там "декларировано" что она должна работать с ИНТ(и не только) перечисленными через запятую я честно говоря не видел. Может ссылка есть?
 

Фанат

oncle terrible
Команда форума
В топике речь о библиотеке.
Декларироавно в здравом смысле. Никому нафиг не нужен херург, который делает только одну половину операции - режет, но не зашивает.
Никому не нужна библиотека, которая умеет подставлять только половину данных.
 

tf

крылья рулят
prepare не работает с массивами, этим грешит и pdo, насколько я помню ему это в минус приводили
но она и не предназначена для placeholder, она предназначена для подстановки данных в кучу повторяющихся запросов, видимо автор не считает что там нужны массивы, хотя и зря

но если вы их используете как плацехолдеры то что вам мешает поступить правильно - переписать bind_param (что на си) и написать в баг трек об этом?
 

Mols

Новичок
Ну вот в том и дело, что оно не декларировано.
И не может быть такая чушь декларирована.
Потому как не определено, как вообще должны хранится данные для подстановки в IN. Это может быть как массив, так и набор ртдельных переменных. Это могут быть данные разного типа. Поэтому программист сам должен позаботится о подстановке этих данных в запрос. И это вполне соответствует здравому смыслу. Потому как все инструменты для этого библиотека предоставляет. А в том, чтобы всунуть один плейсхолдер в запрос, и потом удивляться, что библиотека не знает, что там засунуто в какой-то массив.... но это очень блин здраво)))
 

Mols

Новичок
В топике уже есть. Подставляете соответствующее количество плейсхолдеров. Как и предполагается по документации. Просто на мой взгляд, в этой конкретной ситуации легче и читабельнее привести данные к ИНТ и сделать джойн.
 

findnext

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

-~{}~ 02.08.09 20:20:

биндить есть смысл когда данные идут от пользователя. Насколько я понимаю в данном контексте ид будут выбираться из бд. Почему нельзя выполнить напрямую запрос?

-~{}~ 02.08.09 20:22:

можно привести пример, как подставить средствами библиотеки параметры в in?
никак, а нужно ли это вообще в библиотеке?

-~{}~ 02.08.09 20:23:

Потому как не определено, как вообще должны хранится данные для подстановки в IN
Mols
у тебя часто разные типы данных подставляются в IN (в перемешку INT, STRING)?
 

findnext

Новичок
*****
перед тем как попасть в бд данные должны биндится тоже
 

tf

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

findnext

Новичок
да...т.е по другому, если объяснить, то я не могу представить себе ситуации, когда IN необходимо использовать в случаях, когда данные идут от пользователя.
 

DiMA

php.spb.ru
Команда форума
вроде уже обсосали все ранее?

1. Что за бред с "число+строка в IN"? Считаем ВСЁ строками. ВСЁ слешим и в кавычки. Это все. Единственное исключение - NULL.

2. Какая нахрен разница, данные в IN от юзера или из базы? Чтоза бред? Из базы никогда не читаются данные от того же юзера, записанные ранее, и слешить или подставлять в кавычки не нужно?
 

Фанат

oncle terrible
Команда форума
Дима, по первому пункту. Речь-то о том, что считаем все параметрами. А база, типа, сама разберется, строка там или не строка.
А по второму товарищ бредит, конечно.
 

DiMA

php.spb.ru
Команда форума
Базе пох - заключено в кавычки или нет. Число в кавычках воспринимается так же, как и без кавычек. Че, еще никто этого не полнял? Исходя из этого нет никакого смысла в разделении логики на числа/строки. Считаем все строками.
 

Фанат

oncle terrible
Команда форума
Дим, речь не об SQL, а о prepared statements. там нет вообще ни строк, ни чисел.
 
Сверху