getMessage(); } if (!preg_match( '/^([а-яА-ЯЁёa-zA-Z0-9_\s]+)$/u', $nickname)) die("Bad login"); // Проверяем есть ли предмет с ID у пользователя $sql_check = "SELECT * FROM `".$rewarr['bdtabname']."` a INNER JOIN `".$rewarr['bduserstabname']."` b ON a.".$rewarr['bdtabbind']." = b.".$rewarr['bdtabbind']." WHERE b.".$rewarr['bdtabusers']." = :nickname AND a.".$rewarr['bdtabrewardid']." = ".$rewarr['itemid']; $stmt_check = $pdo->prepare($sql_check); $stmt_check->execute( array(':nickname' => $nickname) ); $stmt_check_row = $stmt_check->fetch(PDO::FETCH_ASSOC); // если нет, то добавляем, иначе обновляем запись if(!$stmt_check_row) { // узнаем максимальный айди в таблице с инвентарем $get_maxid_query = "SELECT id FROM `".$rewarr['bdtabname']."` ORDER BY id DESC LIMIT 0, 1"; $get_maxid = $pdo->query($get_maxid_query)->fetch(); $maxid = $get_maxid['id']; // прибавляем к нему 1 $maxid++; //узнаем char_id по нику $sql_get_char_id = "SELECT ".$rewarr['bdtabbind']." FROM `".$rewarr['bduserstabname']."` WHERE ".$rewarr['bdtabusers']." = :nickname"; $stmt_get_char_id = $pdo->prepare($sql_get_char_id); $stmt_get_char_id->execute( array(':nickname' => $nickname) ); $char_ids = $stmt_get_char_id->fetch(); $char_id = $char_ids[$rewarr['bdtabbind']]; // добавляем новую запись в таблицу с инвентарем $sql_insert = "INSERT INTO `".$rewarr['bdtabname']."` (`id`, `".$rewarr['bdtabbind']."`, `".$rewarr['bdtabrewardid']."`, `".$rewarr['bdtabrewards']."`, `equip`, `identify`, `refine`, `attribute`, `card0`, `card1`, `card2`, `card3`, `option_id0`, `option_val0`, `option_parm0`, `option_id1`, `option_val1`, `option_parm1`, `option_id2`, `option_val2`, `option_parm2`, `option_id3`, `option_val3`, `option_parm3`, `option_id4`, `option_val4`, `option_parm4`, `expire_time`, `favorite`, `bound`, `unique_id`) VALUES (".$maxid.", ".$char_id.", ".$rewarr['itemid'].", ".$rewarr['amount'].", 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)"; $pdo->exec($sql_insert); } else { $sql_upd = "UPDATE `".$rewarr['bdtabname']."` a INNER JOIN `".$rewarr['bduserstabname']."` b ON a.".$rewarr['bdtabbind']." = b.".$rewarr['bdtabbind']." SET a.".$rewarr['bdtabrewards']." = a.".$rewarr['bdtabrewards']." + ".$rewarr['amount']." WHERE b.".$rewarr['bdtabusers']." = :nickname AND a.".$rewarr['bdtabrewardid']." = ".$rewarr['itemid']; $stmt_upd = $pdo->prepare($sql_upd); $stmt_upd->execute( array(':nickname' => $nickname) ); } echo 'Success'; ?>