PHP ve MySQL - çift girişleri gönderme

2 Cevap php

Ben MySQL tabloya iki alanda (isim ve e-posta) ile bir form göndermek çalışıyorum.

Yerel sunucuda (benim laptop) üzerinde, gayet güzel çalışıyor.

Ama üretim sunucusuna, iki kez gönderme olduğunu!

Nedenini bilemiyorum.

İşte kod:

$name = ucwords(strtolower(trim($_POST['name'])));

$email = strtolower(trim($_POST['email']));

$mysqli = new mysqli($server, $serveruser, $serverpass, $dbname);

$name = $mysqli->real_escape_string($name);

$email = $mysqli->real_escape_string($email);

$sql = "INSERT INTO table_name (name, email) VALUES ('" . $name . "', '" . $email . 
"')";

$res = mysqli_query($mysqli, $sql);

Bu beni deli ediyor.

2 Cevap

Ben bariz bir şey gibi geliyor biliyorum, ama, bariz şeyler biz nedense kontrol son şey olma eğilimindedir ...

Dosyaları laptop ve aynı sunucuda mı? Eğer çift girişli neden başka bir yerde benzer bir SQL sorgusu yürütme olabilir mi?

SQL sorgu (Eğer tek olduğunu düşünüyorum) içeren satırı yorum varsa, bir şey veritabanına girilen olsun demek? Eğer öyleyse, başka bir yerde ikinci bir SQL sorgusu var.

require veya include fonksiyonları kullanılarak başka bir dosya içine dahil edilmeden bu kodu içeren bir dosya var mı? Eğer öyleyse, require_once veya include_once işlevi daha iyi bir seçim olurdu?

Bu diğer düzeltmeler çalışabilir iken, onlar yamalar - belirti çıkarmadan ziyade neden ele. Daha iyi bunu bulmak yerine, sadece bu beklenmedik davranışa geçici bir çözüm olabilir derin düzeyde dışarı sıralamak için.

Ben sorun istemci tarafında olabileceğini düşünüyorum. Belki form nedense iki kez gönderme olduğunu. Hata ayıklama gibi iki şey yapardı:

  1. DB email bir PK Ekle oluştuğunda hemen hemen bir hata vermek için yapmak.
  2. Sorgu sonuçları ve sonrası hatalarını kontrol edin (eğer varsa)