Ir para conteúdo
Fórum Script Brasil
  • 0

tonzinho

Pergunta

Olá pessoal sou novo no forum, e começei a estudar php pelo manual,pois nao tenho condiçoes de pagar um curso.

Bom estou passando um script pequeno que tenho aqui,para PDO e estou com problemas 


Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key

Meu código (funcionava perfeitamente com mysql):

$res = $tonn->prepare("INSERT INTO fun_online SET userid = :userid, actvtime = :actvtime, place = :place, placedet = :placedet");
        $res->bindParam(':userid', $uid, PDO::PARAM_STR);
        $res->bindParam(':actvtime', $ttime, PDO::PARAM_STR);
        $res->bindParam(':place', $place, PDO::PARAM_STR);
        $res->bindParam(':placedet', $plclink, PDO::PARAM_STR);
        $res->execute();
    if(!$res)
    {
        $res = $tonn->prepare("UPDATE fun_online SET actvtime = :actvtime, place = :place , placedet = :placedet WHERE userid = :userid");
        
        $res->bindValue(':actvtime', $ttime, PDO::PARAM_STR);
        $res->bindValue(':place', $place, PDO::PARAM_STR);
        $res->bindValue(':placedet', $plclink, PDO::PARAM_STR);
        $res->bindValue(':userid', $uid, PDO::PARAM_STR);
        $res->execute();
    
    }

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Se eu entendi você está fazendo uma consulta que ao existir o usuário atualiza, e se não existir cria um novo.

Você só precisa executar a sua query uma vez, basta dizer ao mysql que no caso de id duplicada ele deve atualizar os dados.

Acrescentei ao código que vc postou a conexão com o banco de dados e as variáveis que vc tá passando e funcionou aqui desse jeito:

$tonn = new PDO("mysql:host=localhost;dbname=test", "root", "");

$uid = "33";
$ttime = "03:33";
$place = "algum lugar33";
$plclink = "alguma url33";
        
$res = $tonn->prepare("INSERT INTO fun_online (userid, actvtime, place, placedet) VALUES(:userid, :actvtime, :place, :placedet) ON DUPLICATE KEY UPDATE actvtime=VALUES(actvtime), place=VALUES(place), placedet=VALUES(placedet)");
$res->bindParam(':userid', $uid, PDO::PARAM_INT);
$res->bindParam(':actvtime', $ttime, PDO::PARAM_STR);
$res->bindParam(':place', $place, PDO::PARAM_STR);
$res->bindParam(':placedet', $plclink, PDO::PARAM_STR);
$res->execute();

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Tonzinho tudo bem? Tem um excelente curso de PHP online completo, onde você aprende do zero ao avançado e tem acesso vitalício ao curso, achei um ótimo custo beneficio, por conta do aprendizado e dos projetos que é são ensinados passo a passo neste curso, fica a dica, abraços!

Todo detalhe e grade do curso de PHP completo você encontra neste link: http://suaatitude.com

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...