Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2016, 19:20   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Вопрос Цикл по записям в PHP

Доброго времени суток!
Есть в базе таблица users и есть PHP.
В PHP с помощью POST отправляю uids такого вида: 1,2,3,
Хочу полученные через PHP uids сверить с каждым uid в таблице на наличие у него параметра status=1
PHP код:
<?php
$query 
"SELECT * FROM `users`";         
$result mysql_query($query) or die ("ERROR: ".mysql_error());

while (
strpos($_POST['usrids'], ',')) {
        ???
}
?>
Начал делать и запаролся на моменте, где нужно из $_POST['usrids'] вытаскивать через while uid и сравнивать, далее удалить из $_POST['usrids'] проверенный uid и двигаться дальше.
Shouldercannon вне форума Ответить с цитированием
Старый 10.01.2016, 19:29   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
В PHP с помощью POST отправляю uids такого вида: 1,2,3,
Отправляете? Может таки клиент (например браузер пользователя) отправляет, а ваш РНР скрипт их получает?
Или у вас два сервера с РНР между собой общаются?

"1,2,3" это просто одна строка? explode тогда http://php.net/manual/en/function.explode.php
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.01.2016, 19:32   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

А почему бы сразу в запросе не проверять статус?
PHP код:
SELECT FROM `usersWHERE `uidIN (123) AND `status`=1
Andkorol вне форума Ответить с цитированием
Старый 10.01.2016, 19:37   #4
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Зацклились на while ? кругом он с удалением...
есть и другие операторы цикла, почитайте
come-on вне форума Ответить с цитированием
Старый 10.01.2016, 20:03   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Отправляете? Может таки клиент (например браузер пользователя) отправляет, а ваш РНР скрипт их получает?
Или у вас два сервера с РНР между собой общаются?

"1,2,3" это просто одна строка? explode тогда http://php.net/manual/en/function.explode.php
Отправляю чере Delphi IdHTTP.Post;
Цитата:
Сообщение от Andkorol Посмотреть сообщение
А почему бы сразу в запросе не проверять статус?
PHP код:
SELECT FROM `usersWHERE `uidIN (123) AND `status`=1
Там uid может быть до 100 штук
Shouldercannon вне форума Ответить с цитированием
Старый 10.01.2016, 20:12   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Там uid может быть до 100 штук
И что?
Думаете 100 запросов быстрее 1? Проверяли?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.01.2016, 20:15   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Там uid может быть до 100 штук
100 штук – фигня:
Цитата:
The number of values in the IN list is only limited by the max_allowed_packet value.
An example of default setting is max_allowed_packet | 1048576 (1 MB)
Andkorol вне форума Ответить с цитированием
Старый 10.01.2016, 20:17   #8
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Если можно будет сделать так
PHP код:
SELECT FROM `usersWHERE `uidIN ($POST['users']) AND `status`=1
Буду только рад
Shouldercannon вне форума Ответить с цитированием
Старый 10.01.2016, 20:25   #9
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Если можно будет сделать так
PHP код:
SELECT FROM `usersWHERE `uidIN ($POST['users']) AND `status`=1
Буду только рад
Ну проверить просто: нагенерить с пол-миллиона тестовых юзеров – и погонять запросами по 80-100 uid в IN, засекая время.
Как по мне – это эффективнее, чем гонять те же 500k юзеров PHP-циклом ради проверки 5-ти uid, например.
Andkorol вне форума Ответить с цитированием
Старый 10.01.2016, 20:26   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Нельзя, Бобби придет.


https://www.google.com/search?q=php+sql+injection
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PHP цикл! marikkil Помощь студентам 1 19.02.2013 11:41
цикл по записям vladislav_m БД в Delphi 7 05.04.2012 19:35
Цикл [PHP/MYSQL] madmaniac Помощь студентам 2 21.01.2012 16:58
Цикл с удалением в PHP yfnf3 Помощь студентам 1 06.02.2011 22:24
Цикл в php [ for ] Рустам PHP 10 05.12.2008 15:32