Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Собрать id и подставить в запрос.


Автор: Predator199 5.12.2012, 22:34
Есть цикл:

Код

      foreach ($count_playe as $ser){
        $vs_pl = $vs_pl+$ser->onl;    
        if($vs_pl<=25){
            $ids .= $ser->id.',';
        }
   }

 Как правильно собрать все id ,чтоб потом можно было подставить в сортировку через in(в запрос).
У меня получается как одно огромное число или каждое id через запятую + с запятой на конце.

Автор: Sanchezzz 5.12.2012, 23:11
Код

(array)$ids;
foreach ($count_playe as $ser){
        $vs_pl = $vs_pl+$ser->onl;    
        if($vs_pl<=25){
            $ids[] = $ser->id;
        }
   }

print implode(',',$ids);

или
Код

foreach ($count_playe as $ser){
        $vs_pl = $vs_pl+$ser->onl;    
        if($vs_pl<=25){
            $ids .= $ser->id.',';
        }
   }

print rtrim($ids,',');


нз.

Автор: Predator199 6.12.2012, 07:30
Спс.

Автор: Aliance 6.12.2012, 10:24
Predator199, тебе самому-то понятно будет через пару месяцев, что обозначают переменные, которые названы так:
Код

$count_playe
$vs_pl
$ser

Автор: Predator199 6.12.2012, 13:04
Понятны или нет, а выход только такой придумал. Щас хочу попробовать занести в др таблицу, возникли следующие вопросы.
К примеру у меня 1 массив, в нем 22 записи.  Можно ли записать, создать новый массив... Другими словами, записать все 22 записи из массива 1 запросом. Я не могу понять, вот я вытащил из массива 22 записи(город и страна). Как так схитрить и подставить в 1 запрос?

Автор: Arantir 6.12.2012, 13:22
Predator199, не в обиду сказано, но перед тем, как создавать по 2-3 темы каждый день, ознакомились бы с основами php, SQL и прочего, чем пользуетесь. Минимум половина вопросов бы отпали до их появления.

Код

INSERT INTO `table_name` VALUES ('a','b','c'), ('d','e','f'),  ('g','h','i'), <строка 4>, <строка 5>, <строка 6>, ...
Всунуть можно столько, сколько может принять сервер. В среднем 50-100 строчек можно одним махом отправить. Но если слишком много, то может возникнуть ошибка на подобии "Превышение размера запроса". Но 22 город-страна вы уж точно отправите.

Автор: Predator199 6.12.2012, 14:50
Спс. Вообщем вышло 96 т smile :
('g','h','i')
Не записывает, только около 80 может записать за раз.
В my.ini выставил:
max_allowed_packet = 12222M

Все равно не записывает.
Попалась запятая в названии города, есть ли выход кроме как проверять и удалять символы из названия. Можно ли  записать вместе с запятыми и скобками(если вышло так что они расположены как отдельное поле или запись)?

Автор: Arantir 6.12.2012, 15:49
Ну так сделайте несколько запросов. Разве это проблема?
Запятая в названии? — Возьмите значение в одинарные кавычки. Сами одинарные кавычки экранируйте обратным слешем.
Говорю же, прочитайте про php и mysql. Передача любых данных с всякими кавычками и скобочками — это тривиальные задачи, решаемые встроенными средствами, о которых пишеться на первых страницах документаций.
Даю подсказку — prepared statements.

Автор: Predator199 6.12.2012, 17:09
(\'• Johnisonfire\'), со слешами не записывает.  Без слешей записывает, но ячейка пуста.

Автор: Aliance 6.12.2012, 18:12
Johnisonfire - это название города?

Ты чего добиться хочешь, сформулируй кратко и ясно входные данные и ожидаемый результат.

Автор: Arantir 6.12.2012, 19:16
Predator199, последний раз рекомендую прочитать документацию, и не издеваться над участниками форума.

Цитата

(\'• Johnisonfire\')
 smile По-моему вы не поняли, что сделали.

Чтобы записать строку "• Johnisonfire", экранировать ничего не нужно. Одинарные скобки указывают в запросе на то, что это строка, то есть так же, как строка в php.

Код

$query = "INSERT INTO `table_name` VALUES ('• Johnisonfire')";

Автор: Predator199 7.12.2012, 00:10
Aliance, я для примера. А так я хачу=), записать около 10 т за раз. Но не получается записать то слово которое привел в пример, не могу дальше испытывать. Пока не пойму в чем ошибка.
Arantir,У меня так пустая запись в табл.
Свойства поля:
name text utf8_general_ci
Как заставить записать слово вместе с точкой?

Автор: Predator199 8.12.2012, 15:06
Достаточно было mysql_real_escape_string и кодировка поля utf8_unicode_ci. Чего я только не напридумывал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)