За последние 24 часа нас посетили 34956 программистов и 1755 роботов. Сейчас ищут 886 программистов ...

Правильность SQL запроса

Тема в разделе "PHP и базы данных", создана пользователем Stok, 14 июл 2015.

  1. Stok

    Stok Новичок

    С нами с:
    30 дек 2014
    Сообщения:
    2
    Симпатии:
    0
    Приветствую, у БД такая структура:
    Код (PHP):
    1. CREATE TABLE IF NOT EXISTS `vip_users` (
    2.   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    3.   `auth` varchar(32) DEFAULT NULL,
    4.   `name` varchar(64) NOT NULL DEFAULT 'unknown',
    5.   `ip` varchar(32) DEFAULT NULL,
    6.   `auth_type` int(3) NOT NULL DEFAULT '0',
    7.   `pass_key` varchar(64) DEFAULT NULL,
    8.   `password` varchar(64) DEFAULT NULL,
    9.   `group` varchar(64) DEFAULT NULL,
    10.   `expires` int(11) unsigned NOT NULL DEFAULT '0',
    11.   PRIMARY KEY (`id`),
    12.   UNIQUE KEY `auth` (`auth`)
    13. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; 
    После оплаты выполняется данный sql запрос
    Код (PHP):
    1. function buygroup($group, $server, $date)
    2.     {
    3.         $groups = $this->config['groups'];
    4.         if ($date < 1 || $date > 4) $arr[] = msg("Ошибка даты.");
    5.         if (empty($groups[$group])) $arr[] = msg("Группы не существует");
    6.         $price = ($date == 4) ? $groups[$group]['price_premanent'] : $groups[$group]['price']*($date*30);
    7.         if(($_SESSION['rub'] - $price) < 0) $arr[] = msg("Вам не хватает ".NoneMoney($price)." <i class='fa fa-rub'></i>");
    8.         if (empty($this->config['servers'][$server])) $arr[] = msg("Сервер не найден");
    9.         if (count($arr) > 0) {
    10.             foreach($arr as $value) $r .= $value;
    11.             return $r;
    12.         } else {
    13.             $pdo = new DATABASE(
    14.                 "mysql:host={$this->config['servers'][$server]['host']};dbname={$this->config['servers'][$server]['user']}",
    15.                 $this->config['servers'][$server]['user'],
    16.                 $this->config['servers'][$server]['pass']
    17.             );
    18.             $this->_money('-', $price, $_SESSION['id']); $time = ($date == 4) ? 0 : time() + ($date*30*24*60*60);
    19.             $infodonate = $pdo->__fetch("SELECT * FROM `{$this->config['servers'][$server]['buy']}` WHERE `auth` = '{$_SESSION['steam']}' AND `group` = '{$group}'");
    20.             if (!empty($infodonate)) {
    21.                 if ($time != 0) $time = $infodonate['time'] + ($date*30*24*60*60);
    22.                 $pdo->query("UPDATE `{$this->config['servers'][$server]['buy']}` SET `time` = '{$time}' WHERE `auth` = '{$_SESSION['steam']}' 'auth_type' = '0'");
    23.             } else {
    24.                 $pdo->query("DELETE FROM `{$this->config['servers'][$server]['buy']}` WHERE `auth` = '{$_SESSION['steam']}'");
    25.                 $pdo->query("INSERT INTO `{$this->config['servers'][$server]['buy']}` (`auth`, `time`, `group`) VALUES('{$_SESSION['steam']}', '{$time}', '{$group}', '0')");
    26.             }
    27.             return msg(
    28.                 "Покупка прошла успешно. Вам выдан статус {$groups[$group]['title']} на сервере {$this->config['servers'][$server]['title']}", 
    29.                 "success"
    30.             );
    31.         }
    32.     }
    33.     
    34.     function TableDonate()
    35.     {
    36.         foreach($this->config['servers'] as $key => $serv)
    37.         {
    38.             $pdo = new DATABASE("mysql:host={$serv['host']};dbname={$serv['user']}", $serv['user'], $serv['pass']);
    39.             $data = $pdo->__fetch("SELECT `time`, `group` FROM `{$serv['buy']}` WHERE `steamid` = '{$_SESSION['steam']}'");
    40.             if (!empty($data)) {
    41.                 $table .= set(
    42.                     "other/donate", 
    43.                     array(
    44.                         "{time}" => ($data['time'] == 0) ? "Навсегда" : "До ".date("d.m.y H:i:s", $data['time']),
    45.                         "{server}" => $serv['title'],
    46.                         "{group}" => $this->config['groups'][$data['group']]['title']
    47.                     )
    48.                 );
    49.             }
    50.             $pdo = NULL; $data = NULL;
    51.         }
    52.         return $table;
    53.     } 
    Так вот, я не бог php кодинга, кому не сложно проверьте sql запрос не правильность исходя из структуры БД.

    И сразу вопрос, в БД есть столбец id, я не могу понять как мне дать системе понять, чтобы она добавляла в столбец следующий id.
    Тоесть у нас есть столбец с идом 36, это дело нужно определить и следующий столбец добавляется с идом
    37.

    Заранее благодарю за помощь.

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    http://phpfaq.ru/debug
    https://netbeans.org/kb/docs/php/debugging_ru.html
    Проверить правильность запросов можно в PHPMyAdmin, выполнив их.

    Для id у тебя auto increment, значит чтобы его каждый раз увеличивать, при insert для id ставь значение null и база сама увеличит счётчик.
    В том же PHPMyAdmin есть возможность вставить запись в таблицу, не указывай id и посмотри какой запрос будет сформирован.

    Ещё почитай книги на тему: mysql для начинающих.

    А что в коде проверять? Если не работает то первые две ссылки помогут понять в чём проблема. Пиши конкретнее если что-то не работает и тебе не понятно почему.