Aeglon Posted July 7, 2018 at 05:29 PM Share Posted July 7, 2018 at 05:29 PM (edited) Boas, Como posso pegar em um valor de uma tabela, e actualizar a mesma com +1 Spoiler // Preciso de algo para procurar o valor da tabela infernus std::auto_ptr<SQLMsg> pMsg(DBManager::instance().Query("SELECT infernus FROM player.player WHERE name = '%s';", GetName())); //Aqui é onde vai adicionar +1 ao valor existente e fazer a actualização do mesmo..... DBManager::Instance().Query("UPDATE player.player SET infernus ='pMsg+1' WHERE name='%s'", GetName()); --- Esta linha trabalha sem problemas, mas isso esta sempre a colocar 100000 na tabela. A ideia é pegar nos 100000 e acrescentar +1 DBManager::Instance().Query("UPDATE player.player SET infernus ='100000' WHERE name='%s'", GetName()); mas algo está muito mal e não estou a ser capaz de resolver este pequeno problema. Alguma ajuda por ai? Isto tem de ser em C++ Edited July 7, 2018 at 05:30 PM by Aeglon Link to comment
Aeglon Posted July 8, 2018 at 05:00 PM Author Share Posted July 8, 2018 at 05:00 PM Up!! Link to comment
Berhart Posted July 8, 2018 at 06:36 PM Share Posted July 8, 2018 at 06:36 PM Já tentaste fazer algo do género? UPDATE [Nome da Tabela] SET [Nome da Coluna] = [Nome da Coluna] + 1 WHERE [Condições] No teu caso talvez seja: DBManager::Instance().Query("UPDATE player.player SET infernus = infernus + 1 WHERE name='%s'", GetName()); Link to comment
Aeglon Posted July 8, 2018 at 10:33 PM Author Share Posted July 8, 2018 at 10:33 PM realmente algo tão simples assim não testei..... isso vai funcionar dessa forma!? oO? Vou ver e ja digo algo. 4 horas atrás, Berhart disse: Já tentaste fazer algo do género? UPDATE [Nome da Tabela] SET [Nome da Coluna] = [Nome da Coluna] + 1 WHERE [Condições] No teu caso talvez seja: DBManager::Instance().Query("UPDATE player.player SET infernus = infernus + 1 WHERE name='%s'", GetName()); lols, sem comentários da minha parte.... é a mania que eu tenho de complicar as coisas mais simples -.- a funcionar 5* Obrigado! Link to comment
Aeglon Posted July 9, 2018 at 02:40 PM Author Share Posted July 9, 2018 at 02:40 PM Está praticamente 90% acabado o que estou a fazer. Só falta esta verificação... Spoiler total = DBManager::Instance().Query("SELECT infernus FROM player.player WHERE name='%s'", GetName()); if (total >= 3 ){ ChatPacket(CHAT_TYPE_INFO,"linha de teste"); } Mas nem deixa compilar.... alguma ideia? Preciso de verificar o valor da tabela, e se for >= 3 envia o texto e faz return. Alguma ideia? please. Link to comment
Aeglon Posted July 9, 2018 at 06:18 PM Author Share Posted July 9, 2018 at 06:18 PM (edited) Ups, double post. Sorry Edited July 9, 2018 at 06:22 PM by Aeglon Link to comment
Berhart Posted July 10, 2018 at 02:50 AM Share Posted July 10, 2018 at 02:50 AM (edited) Boa noite. Pelo que estive a investigar talvez isto possa ajudar: SQLMsg * pMsg = DBManager::instance().DirectQuery(Query) MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult) str_to_number(total, row[0]) Spoiler Isso tem parecenças com PHP. Para tentares compreender melhor: <?php $result = mysql_query("SELECT id,email FROM people WHERE id = '42'"); if (!$result) { echo 'Could not run query: ' . mysql_error(); exit; } $row = mysql_fetch_row($result); echo $row[0]; // 42 echo $row[1]; // the email value ?> Edited July 10, 2018 at 02:51 AM by Berhart Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now