Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde, nunca tive problema parecido... Eu recebo postback de uma intermediadora de pagamento, e deveria funcionar corretamente, o código está certo, já revisei várias vezes.
Primeiro eu executo a query, neste modelo:
SELECT status FROM vendas WHERE id_venda = 'XXXXXXXXXXXX' LIMIT 1
Aí eu faço a verificação se o registro já está cadastrado vai apenas atualizar as informações. Agora se não tiver cadastrado, vai inserir..
Eu fiz o teste e gravei a mesma query numa coluna que criei, e também a quantidade de registros se já existir. Por incrível que pareça, a query é exatamente a mesma. Os mesmos valores, e o mysqli_num_rows sempre retorna valor 0.
Eu não faço ideia do que seja, o que pode ser talvez?Alguém pra me ajudar?
Para casos assim nas aplicações que crio eu não faço uma consulta para depois inserir registros, ainda mais se eu não quero tal ação.Você pode modificar seu banco de dados criando INDEXes que não permitem duplicação de registro baseado em colunas chaves.
E no proprio código, na querie, você pode user o INSERT ON DUPLICATE KEY UPDATE - [http://www.mysqltutorial.org/mysql-insert-or-update-on-duplicate-key-update/](http://www.mysqltutorial.org/mysql-insert-or-update-on-duplicate-key-update/)
Desta forma o mysql vai atualizar o registro caso a querie de insert retorne algum erro sobre registro duplicado com base nas indexes criadas que eu comentei no inicio.
eu utilizo um servidor compartilhado da hostgator. Será que está acontecendo algum delay na verificação? Pq eu executo as query no phpmyadmin, e retorna corretamente a quantidade existente na tabela.
---------
o que eu percebi: o sistema só insere 2x o mesmo registro. Eu já retirei a verificação, e vi que todos os callback são enviados várias vezes em poucos segundos (não sei porque).