Jump to content

alterar valor existente na BD por SQL


Aeglon

Recommended Posts

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 by Aeglon
Link to comment

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

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

Boa noite.
Pelo que estive a investigar talvez isto possa ajudar:

  1. SQLMsg * pMsg = DBManager::instance().DirectQuery(Query)
  2. MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult)
  3. 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 by Berhart
Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...