tonzinho Postado Abril 17, 2017 Denunciar Share Postado Abril 17, 2017 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(); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 sergiodesa Postado Abril 17, 2017 Denunciar Share Postado Abril 17, 2017 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(); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 tonzinho Postado Abril 17, 2017 Autor Denunciar Share Postado Abril 17, 2017 Agora deu certo , obrigado pela ajuda amigo ! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 recover Postado Abril 18, 2017 Denunciar Share Postado Abril 18, 2017 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
tonzinho
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
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.