Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/23: Рейтинг темы: голосов - 23, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 26
1

Mysql запросы.

18.07.2011, 00:27. Показов 4590. Ответов 38
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, я с PHP и Mysql работаю не очень долго, возникла проблема.
Имеется парсер JSON'а, в URL JSON'а вставляются два значения из базы которые вводит юзер (Имя и сервер). Результат записывается в другой столбец, для каждого юзера по его ID. Суть проблемы в том, что при обновлении базы, обновляется только последняя строчка в базе. А нужно чтоб обновлялась для каждого юзера. Код скрипта.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
mysql_connect($dbhost, $dbuser, $dbpasswd);
mysql_select_db ($dbname);
mysql_query('/*!40101 SET NAMES "cp1251" */'); 
$target = "SELECT * FROM phpbb_profile_fields_data";
$mq = mysql_query($target);
while($row = mysql_fetch_array($mq))
{
$userid = $row['user_id'];
$server = $row['pf_server'];
$charname = $row['pf_character_name'];
}
$json = file_get_contents("http://eu.battle.net/api/wow/character/".$server."/".$charname."", true);
$decode = json_decode($json, true);
 
$name = $decode['name'];
$realm = $decode['realm'];
$class = $decode['class'];
$race = $decode['race'];
$level = $decode['level'];
$achievment = $decode['achievementPoints'];
$result = "$name, $realm, $class, $race, $level, $achievment";
 
mysql_query("UPDATE `phpbb_profile_fields_data` SET `pf_parse`='$result' WHERE `user_id`='$userid'");
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2011, 00:27
Ответы с готовыми решениями:

Запросы mysql
Решил создать запрос, но на выходе получил ошибку #1064 CREATE DEFINER=`root`@`localhost`...

MySQL запросы
Начинаю изучать PHP + MySQL. Как уменьшить нагрузку на БД? Я думаю что надо убрать не нужны...

Обычные mysql запросы
Есть ли различия между этими двумя запросами? mysql_query('SELECT * FROM table WHERE...

Множественные запросы в MySQL
Нужно изменить значение поля в базе данных, для этого написана процедура. Сначала вызывается...

38
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
18.07.2011, 10:55 2
Цитата Сообщение от Oran Посмотреть сообщение
Добрый день, я с PHP и Mysql работаю не очень долго, возникла проблема.
Имеется парсер JSON'а, в URL JSON'а вставляются два значения из базы которые вводит юзер (Имя и сервер). Результат записывается в другой столбец, для каждого юзера по его ID. Суть проблемы в том, что при обновлении базы, обновляется только последняя строчка в базе. А нужно чтоб обновлялась для каждого юзера. Код скрипта.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
mysql_connect($dbhost, $dbuser, $dbpasswd);
mysql_select_db ($dbname);
mysql_query('/*!40101 SET NAMES "cp1251" */'); 
$target = "SELECT * FROM phpbb_profile_fields_data";
$mq = mysql_query($target);
while($row = mysql_fetch_array($mq))
{
$userid = $row['user_id'];
$server = $row['pf_server'];
$charname = $row['pf_character_name'];
}
$json = file_get_contents("http://eu.battle.net/api/wow/character/".$server."/".$charname."", true);
$decode = json_decode($json, true);
 
$name = $decode['name'];
$realm = $decode['realm'];
$class = $decode['class'];
$race = $decode['race'];
$level = $decode['level'];
$achievment = $decode['achievementPoints'];
$result = "$name, $realm, $class, $race, $level, $achievment";
 
mysql_query("UPDATE `phpbb_profile_fields_data` SET `pf_parse`='$result' WHERE `user_id`='$userid'");
если ты хочешь обновлять много юзВерей) это надо делать в цикле а у тебя айди одного передаётся который был задан где то там, вот и результат.
0
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 26
18.07.2011, 14:30  [ТС] 3
Цитата Сообщение от Ivan.php Посмотреть сообщение
если ты хочешь обновлять много юзВерей) это надо делать в цикле а у тебя айди одного передаётся который был задан где то там, вот и результат.
Спасибо за ответ. Если я вывожу данные из базы в виде
PHP
1
echo "$userid $server $charname";
то все строчки выводятся нормально. А вот когда пропускаю через парсер, идет работа с последней строчкой. Что можете посоветовать исправить?
0
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
18.07.2011, 18:05 4
засунь всё в цикл :


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
mysql_connect($dbhost, $dbuser, $dbpasswd);
mysql_select_db ($dbname);
mysql_query('/*!40101 SET NAMES "cp1251" */'); 
$target = "SELECT * FROM phpbb_profile_fields_data";
$mq = mysql_query($target);
while($row = mysql_fetch_array($mq))
{
$userid = $row['user_id'];
$server = $row['pf_server'];
$charname = $row['pf_character_name'];
 
$json = file_get_contents("http://eu.battle.net/api/wow/character/".$server."/".$charname."", true);
$decode = json_decode($json, true);
 
$name = $decode['name'];
$realm = $decode['realm'];
$class = $decode['class'];
$race = $decode['race'];
$level = $decode['level'];
$achievment = $decode['achievementPoints'];
$result = "$name, $realm, $class, $race, $level, $achievment";
 
mysql_query("UPDATE `phpbb_profile_fields_data` SET `pf_parse`='$result' WHERE `user_id`='$userid'");
}
1
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 26
18.07.2011, 18:29  [ТС] 5
Цитата Сообщение от Ivan.php Посмотреть сообщение
засунь всё в цикл :


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
mysql_connect($dbhost, $dbuser, $dbpasswd);
mysql_select_db ($dbname);
mysql_query('/*!40101 SET NAMES "cp1251" */'); 
$target = "SELECT * FROM phpbb_profile_fields_data";
$mq = mysql_query($target);
while($row = mysql_fetch_array($mq))
{
$userid = $row['user_id'];
$server = $row['pf_server'];
$charname = $row['pf_character_name'];
 
$json = file_get_contents("http://eu.battle.net/api/wow/character/".$server."/".$charname."", true);
$decode = json_decode($json, true);
 
$name = $decode['name'];
$realm = $decode['realm'];
$class = $decode['class'];
$race = $decode['race'];
$level = $decode['level'];
$achievment = $decode['achievementPoints'];
$result = "$name, $realm, $class, $race, $level, $achievment";
 
mysql_query("UPDATE `phpbb_profile_fields_data` SET `pf_parse`='$result' WHERE `user_id`='$userid'");
}
Спасибо, принцип я понял, теперь возникла другая проблема, скрипт загружается очень долго, и начало вылезать очень много ошибок в виде.

Warning: file_get_contents(http://eu.battle.net/api/wow/c... вер%/%имя%) [function.file-get-contents]: failed to open stream: HTTP request failed! in C:\Site\armory.php on line 19
19 линия у меня это
PHP
1
$json = file_get_contents("http://eu.battle.net/api/wow/character/".$server."/".$charname."", true);
0
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
18.07.2011, 18:41 6
покажите какое имя там, возможно оно недопустимо для адрессной строки, скрипт естественно будет выполнятся долго если там скажем 2000 персонажей
0
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 26
18.07.2011, 18:46  [ТС] 7
в базе всего 5 персоонажей, конкретно в данном примере, ссылка получилась в виде http://eu.battle.net/api/wow/character/Ревущий фьорд/Олейна , в браузере она нормально открывается, да и при вызове по ID тоже вызывалась нормально.
Кстате еще вот такая ошибка есть: Fatal error: Maximum execution time of 30 seconds exceeded in C:\Site\armory.php on line 19.
0
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
18.07.2011, 18:58 8
пробелы в адрессной строке недопустимы!
0
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 26
18.07.2011, 19:06  [ТС] 9
Цитата Сообщение от Ivan.php Посмотреть сообщение
пробелы в адрессной строке недопустимы!
Есть способы исправить?
0
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
18.07.2011, 19:10 10
я незнаю точно что Вы хотите, зайдите на страницу этого "ревущего" и покажите ссылку
0
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 26
18.07.2011, 19:15  [ТС] 11
http://eu.battle.net/api/wow/c... орд/Олейна
Так открывается нормально с пробелом. А в php как зделать запрос по ссылке с пробелом?
0
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
18.07.2011, 19:34 12
попробуйте так:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
mysql_connect($dbhost, $dbuser, $dbpasswd);
mysql_select_db ($dbname);
mysql_query('/*!40101 SET NAMES "cp1251" */'); 
$target = "SELECT * FROM phpbb_profile_fields_data";
$mq = mysql_query($target);
while($row = mysql_fetch_array($mq))
{
$userid = $row['user_id'];
$server = $row['pf_server'];
$charname = str_replace(' ','%20',$row['pf_character_name']);
 
$json = file_get_contents("http://eu.battle.net/api/wow/character/".$server."/".$charname."", true);
$decode = json_decode($json, true);
 
$name = $decode['name'];
$realm = $decode['realm'];
$class = $decode['class'];
$race = $decode['race'];
$level = $decode['level'];
$achievment = $decode['achievementPoints'];
$result = "$name, $realm, $class, $race, $level, $achievment";
 
mysql_query("UPDATE `phpbb_profile_fields_data` SET `pf_parse`='$result' WHERE `user_id`='$userid'");
}
1
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 26
18.07.2011, 23:28  [ТС] 13
ммм, не работает.
Тут даже дело в том что символы русские.

Добавлено через 13 минут
Да, и еще хочу добавить, сейчас попробовал использовать urlencode - не работает.
0
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
19.07.2011, 00:00 14
Пардон моя ошибка, попробуйте так:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
mysql_connect($dbhost, $dbuser, $dbpasswd);
mysql_select_db ($dbname);
mysql_query('/*!40101 SET NAMES "cp1251" */'); 
$target = "SELECT * FROM phpbb_profile_fields_data";
$mq = mysql_query($target);
while($row = mysql_fetch_array($mq))
{
$userid = $row['user_id'];
$server = str_replace(' ','%20',$row['pf_server']);
$charname = str_replace(' ','%20',$row['pf_character_name']);
 
$json = file_get_contents("http://eu.battle.net/api/wow/character/".$server."/".$charname."", true);
$decode = json_decode($json, true);
 
$name = $decode['name'];
$realm = $decode['realm'];
$class = $decode['class'];
$race = $decode['race'];
$level = $decode['level'];
$achievment = $decode['achievementPoints'];
$result = "$name, $realm, $class, $race, $level, $achievment";
 
mysql_query("UPDATE `phpbb_profile_fields_data` SET `pf_parse`='$result' WHERE `user_id`='$userid'");
}
0
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 26
19.07.2011, 00:15  [ТС] 15
Все тоже самое, failed to open stream: HTTP request failed!
0
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
19.07.2011, 00:26 16
что написано в error.log ?

в php.ini allow_url_fopen = On ?
0
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 26
19.07.2011, 00:35  [ТС] 17
Цитата Сообщение от Ivan.php Посмотреть сообщение
что написано в error.log ?
Warning: file_get_contents(http://eu.battle.net/api/wow/c... орд/Олейна) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\Site\armory.php on line 17

Цитата Сообщение от Ivan.php Посмотреть сообщение
в php.ini allow_url_fopen = On ?
Да.
0
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
19.07.2011, 00:56 18
а если через браузер зайти по той ссылке?
0
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 26
19.07.2011, 00:58  [ТС] 19
http://eu.battle.net/api/wow/c... орд/Олейна
Открывает то что нужно.
0
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
19.07.2011, 01:04 20
создайте отдельный файл и попробуйте:
PHP
1
echo file_get_contents("http://eu.battle.net/api/wow/character/Ревущий%20фьорд/Олейна");
0
19.07.2011, 01:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.07.2011, 01:04
Помогаю со студенческими работами здесь

$_GET и запросы Mysql
Добрый день! Мне нужна помощь по такому вопросу: Я создаю сайт турагенства(не профессионально,...

Перевод mysql в подготовленные запросы
Здравствуйте. Имеется сайт в котором все запросы идут с помощью mysql. Сайт вероятно страдает от...

В PHP сделать запросы к таблице в БД mysql
База данных - Автозаправочные станции! название полей в таблице: название АЗС, объем бензина(л),...

Можно ли во время цикла WHILE делать новые запросы к MySQL?
Добрый день! Вопрос, наверное, простой для тех, кто разбирается в MySQL... Делаю следующее: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru