PDA

Просмотр полной версии : [Вопрос] Разбираюсь с MySQL r7.



Trane911
29.01.2014, 17:29
Всем привет. Помогите освоиться с MySQL. Пытаюсь сделать сохранение аккаунта, но что-то не получается. Что не так? Желательно, расскажите подробно. С меня спасибо! :smile3:

Вот сам код:


stock SaveAccount ( playerid )
{
new query [ 144 ] ;
format ( query, sizeof query, "UPDATE `users` SET \
`pAdmin` = '%d' \
WHERE `pAdmin` = '%d' LIMIT 1",
PlayerInfo [ playerid ] [ pAdmin ],
PlayerInfo [ playerid ] [ ID ] ) ;
mysql_function_query ( dbHandle, query, false, "", "" ) ;
return 1;
}

DeimoS
29.01.2014, 19:52
Подключение к БД то имеется? Так же хотелось бы увидеть структуру БД и услышать о том, где, как и зачем запускаешь MySQL. Ну и логи можно

Trane911
29.01.2014, 20:38
Подключение к БД то имеется? Так же хотелось бы увидеть структуру БД и услышать о том, где, как и зачем запускаешь MySQL. Ну и логи можно

Подключение имеется, аккаунты создаются. Пароль сохраняется и при авторизации на сервере пароль запрашивается из аккаунта.
Немного не понял вопросов: "Где, как и зачем запускаешь MySQL?" На хостинге, как - не знаю как ответить на такой вопрос :grin:
Зачем? Регистрация нужна же.
Я думаю, что тут ошибка в коде, т.к. я там немного поковырялся :grin:

Вот структура БД:


-- phpMyAdmin SQL Dump
-- version 3.4.6
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Янв 29 2014 г., 19:18
-- Версия сервера: 5.1.66
-- Версия PHP: 5.3.10-pl0-gentoo

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- База данных: `dm_samp`
--

-- --------------------------------------------------------

--
-- Структура таблицы `users`
--

CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`login` varchar(24) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`password` varchar(64) CHARACTER SET cp1251 COLLATE cp1251_bin NOT NULL,
`age` int(11) NOT NULL,
`pAdmin` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


MySQL log:


[19:35:18] >> mysql_query_callback( Connection handle: 1 )
[19:35:18] Passing query SELECT `id` FROM `users` WHERE `login` = 'Trane' LIMIT 1 | ii
[19:35:18] ProcessQueryThread(CheckPlayerRegistered) - Query was successful. (SELECT `id` FROM `users` WHERE `login` = 'Trane' LIMIT 1)
[19:35:18] ProcessQueryThread(CheckPlayerRegistered) - Data caching enabled.
[19:35:18] CMySQLHandler::StoreResult() - Result was stored.
[19:35:18] CMySQLHandler::FreeResult() - Result was successfully free'd.
[19:35:18] CMySQLHandler::ProcessQueryThread() - Data is getting passed to ->ProcessTick()
[19:35:18] CheckPlayerRegistered(ii) - Threaded function called.
[19:35:18] >> cache_get_data( Connection handle: 1 )
[19:35:18] ProcessTick() - The cache has been cleared.
[19:35:19] >> mysql_query_callback( Connection handle: 1 )
[19:35:19] Passing query SELECT `id` FROM `users` WHERE `login` = 'Trane' LIMIT 1 | ii
[19:35:19] ProcessQueryThread(CheckPlayerRegistered) - Query was successful. (SELECT `id` FROM `users` WHERE `login` = 'Trane' LIMIT 1)
[19:35:19] ProcessQueryThread(CheckPlayerRegistered) - Data caching enabled.
[19:35:19] CMySQLHandler::StoreResult() - Result was stored.
[19:35:19] CMySQLHandler::FreeResult() - Result was successfully free'd.
[19:35:19] CMySQLHandler::ProcessQueryThread() - Data is getting passed to ->ProcessTick()
[19:35:19] CheckPlayerRegistered(ii) - Threaded function called.
[19:35:19] >> cache_get_data( Connection handle: 1 )
[19:35:19] ProcessTick() - The cache has been cleared.
[19:35:23] >> mysql_real_escape_string( Connection handle: 1 )
[19:35:23] CMySQLHandler::EscapeString(123456); - Escaped 8 characters to 123456.
[19:35:23] >> mysql_query_callback( Connection handle: 1 )
[19:35:23] Passing query SELECT * FROM `users` WHERE `login` = 'Trane' AND `password` = '123456' LIMIT 1 | i
[19:35:23] ProcessQueryThread(PlayerLogin) - Query was successful. (SELECT * FROM `users` WHERE `login` = 'Trane' AND `password` = '123456' LIMIT 1)
[19:35:23] ProcessQueryThread(PlayerLogin) - Data caching enabled.
[19:35:23] CMySQLHandler::StoreResult() - Result was stored.
[19:35:23] CMySQLHandler::FreeResult() - Result was successfully free'd.
[19:35:23] CMySQLHandler::ProcessQueryThread() - Data is getting passed to ->ProcessTick()
[19:35:23] PlayerLogin(i) - Threaded function called.
[19:35:23] >> cache_get_data( Connection handle: 1 )
[19:35:23] ProcessTick() - The cache has been cleared.
[19:35:30] >> mysql_query_callback( Connection handle: 1 )
[19:35:30] Passing query UPDATE `users` SET `pAdmin` = '0' WHERE `pAdmin` = '2' LIMIT 1 |
[19:35:30] ProcessQueryThread() - Query was successful. (UPDATE `users` SET `pAdmin` = '0' WHERE `pAdmin` = '2' LIMIT 1)
[19:35:30] CMySQLHandler::ProcessQueryThread() - Data is getting passed to ->ProcessTick()

DeimoS
30.01.2014, 06:46
stock SaveAccount ( playerid )
{
new query [ 144 ] ;
format ( query, sizeof query, "UPDATE `users` SET `pAdmin` = '%d' WHERE `pAdmin` = '%d' LIMIT 1",
PlayerInfo [ playerid ] [ pAdmin ],
PlayerInfo [ playerid ] [ ID ] ) ;
mysql_function_query ( dbHandle, query, false, "", "" ) ;
return 1;
}
Прочитай внимательно свой запрос. Ты собираешься изменять аккаунт игрока, уровень админки которого равен ID аккаунта :)

Trane911
30.01.2014, 13:10
stock SaveAccount ( playerid )
{
new query [ 144 ] ;
format ( query, sizeof query, "UPDATE `users` SET `pAdmin` = '%d' WHERE `pAdmin` = '%d' LIMIT 1",
PlayerInfo [ playerid ] [ pAdmin ],
PlayerInfo [ playerid ] [ ID ] ) ;
mysql_function_query ( dbHandle, query, false, "", "" ) ;
return 1;
}
Прочитай внимательно свой запрос. Ты собираешься изменять аккаунт игрока, уровень админки которого равен ID аккаунта :)

Что-то не пойму. Напиши, как будет правильно, желательно, напиши сохранение каких-нибудь 2 параметров. Например, админка и деньги, а я разберусь. Заранее спасибо.

DeimoS
30.01.2014, 13:29
stock SaveAccount ( playerid )
{
new query [ 144 ] ;
format ( query, sizeof query, "UPDATE `users` SET `pAdmin` = '%d', `Money` = '%d' WHERE `pID` = '%d' LIMIT 1",
PlayerInfo [ playerid ] [ pAdmin ],
PlayerInfo [ playerid ] [ pMoney],
PlayerInfo [ playerid ] [ ID ] ) ;
mysql_function_query ( dbHandle, query, false, "", "" ) ;
return 1;
}Только название столбцов и переменных я от балды взял :pardon:

Trane911
30.01.2014, 14:38
stock SaveAccount ( playerid )
{
new query [ 144 ] ;
format ( query, sizeof query, "UPDATE `users` SET `pAdmin` = '%d', `Money` = '%d' WHERE `pID` = '%d' LIMIT 1",
PlayerInfo [ playerid ] [ pAdmin ],
PlayerInfo [ playerid ] [ pMoney],
PlayerInfo [ playerid ] [ ID ] ) ;
mysql_function_query ( dbHandle, query, false, "", "" ) ;
return 1;
}Только название столбцов и переменных я от балды взял :pardon:
Что-то все равно не получилось... Не сохранились данные...

Trane911
30.01.2014, 17:28
stock SaveAccount ( playerid )
{
new query [ 144 ] ;
format ( query, sizeof query, "UPDATE `users` SET `pAdmin` = '%d', `Money` = '%d' WHERE `pID` = '%d' LIMIT 1",
PlayerInfo [ playerid ] [ pAdmin ],
PlayerInfo [ playerid ] [ pMoney],
PlayerInfo [ playerid ] [ ID ] ) ;
mysql_function_query ( dbHandle, query, false, "", "" ) ;
return 1;
}Только название столбцов и переменных я от балды взял :pardon:

В чем еще может быть проблема? Переменные в моде и в БД одинаково записаны... Может быть через скайп проще будет?

DeimoS
30.01.2014, 18:04
В чем еще может быть проблема? Переменные в моде и в БД одинаково записаны... Может быть через скайп проще будет?

Ты заменил то, что написал я, на свои данные? Название столбцов и т.п.? Судя по структуре БД, должно быть так

stock SaveAccount ( playerid )
{
new query [ 144 ] ;
format ( query, sizeof query, "UPDATE `users` SET `age` = '%d', `pAdmin` = '%d' WHERE `id` = '%d' LIMIT 1",
переменная возраста,
PlayerInfo [ playerid ] [ pAdmin ],
PlayerInfo [ playerid ] [ ID ]) ;
mysql_function_query ( dbHandle, query, false, "", "" ) ;
return 1;
}

Trane911
30.01.2014, 20:56
Спасибо, DeimoS, помог, теперь я разобрался с сохранением. :good:

Модераторы закройте тему!

Osetin
01.02.2014, 16:16
Закрыто!