INSERT ignorovat výsledky duplicitní položku ‚0‘ pro primární volby klíče

hlasů
-1

Já používám jednoduchý php skript pro vložení dat do databáze, ale je to nedaří. Dotaz prostě nestal úspěšným bez zobrazení jediné chybě, která je důvod, proč jsem nemohl přijít na to problém. Některé expert tady mi pomoct prosím.

echo $name. .$email. .$pass. .$phone. .$area. .$specialization. .$city. .$latitude. .$longitude;

Výsledkem echo je normální - bez nulových prvků.

$query = mysqli_query($conn, INSERT IGNORE  INTO users (name, email, pass, phone, area, specialization, hospital, city, latitude, longitude) 
                         VALUES ('$name', '$email', '$pass', '$phone', '$area', '$specialization', '$hospital', '$city', '$latitude', '$longitude') );

if ($query) {
                echo Status: Registeration Successful!;

                // creating directory for user and storing dummy profile picture
                //mkdir('../profiles/'.$email_trim, 0777);
                //$result_copy = copy(img/dp.jpg.jpg, ../profiles/.$email_trim./dp.jpg.jpg);
} else {
    echo Status: Err;
}

Tato „Status: Err“ je vytištěna vždy. Nevím proč.

PS jsem dvakrát zkontrolováno databáze popisky polí jsou v pořádku.

UPDATE 1:

přidal jsem

die(mysqli_error($conn));

Prohlášení a říká, že „duplicitní položku‚0‘FOR primární volby klíče‘.

Problém a řešení:

Otázkou bylo, že jsem měl pole ‚id‘, který byl primární klíč tabulky, ale nebyla nastavena na auto_increment. Takže, když jsem se snažil vložit nový záznam, byl jsem vlastně vložení položky s duplicitními PK, což byl problém. I to se změní na auto_increment a problém vyřešil.

Položena 01/09/2015 v 10:26
zdroj uživatelem
V jiných jazycích...                            


7 odpovědí

hlasů
3

Zdá se, že se pokusíte vložit nový prvek s PK = 0, ale již existuje záznam s tímto klíčem! Jaký je primární klíč vašeho stolu? Používáte pole „ID“ u něhož není prokázáno ve svém prohlášení vložky? Je toto pole AUTO_INCREMENT?

Odpovězeno 01/09/2015 v 10:51
zdroj uživatelem

hlasů
2

Bylo by užitečné, aby vidět strukturu vašeho stolu ‚uživatelé‘.

Wild odhad: vypadá to, že může být definován sloupec „ID“ (nebo jakékoliv jiné jméno), který je primární klíč s výchozí hodnotou „0“, ale to není auto přírůstek. Tímto způsobem můžete vložit 1 řádek, a to dostane „0“, jak je hodnota sloupce je „id“, ale nelze vložit další řádek, protože se bude také snažit použít výchozí hodnotu „0“, což se nemůže stát jako primární klíč musí být jednoznačný ,

Pokud tomu tak je, pak prosím měnit uživatelům tabulku a ujistěte se, že primární klíč sloupec je také ‚auto přírůstek‘.

Odpovězeno 01/09/2015 v 10:56
zdroj uživatelem

hlasů
0

Zkontrolujte správné chybu přidáním níže uvedeného kódu uvnitř jiného :

echo mysqli_errno($conn) . '----' . mysqli_error($conn);
Odpovězeno 01/09/2015 v 10:37
zdroj uživatelem

hlasů
0
<?php
if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
?>
Odpovězeno 01/09/2015 v 10:35
zdroj uživatelem

hlasů
-1
$query = mysqli_query($conn, "INSERT IGNORE  INTO `users` (`name`, `email`, `pass`, `phone`, `area`, `specialization`, `hospital`, `city`, `latitude`, `longitude`) 
                 VALUES ('$name', '$email', '$pass', '$phone', '$area', '$specialization', '$hospital', '$city', '$latitude', '$longitude') ") or die(mysqli_error());
Odpovězeno 01/09/2015 v 10:32
zdroj uživatelem

hlasů
-1
$query = mysqli_query($conn, "INSERT IGNORE  INTO `users` (`name`, `email`, `pass`, `phone`, `area`, `specialization`, `hospital`, `city`, `latitude`, `longitude`) 
                     VALUES ('$name', '$email', '$pass', '$phone', '$area', '$specialization', '$hospital', '$city', '$latitude', '$longitude') ");

použijte ` Tick možná proto, že tam je nějaký vyhrazené slovo ve svých oborech.

Odpovězeno 01/09/2015 v 10:29
zdroj uživatelem

hlasů
-2

Myslím, že se zdvojnásobil svou úzkou závorku a nedávejte $ Conn uvnitř dotazu ..

$query = "INSERT IGNORE  INTO users (name, email, pass, phone, area, specialization, hospital, city, latitude, longitude) 
                         VALUES ('$name', '$email', '$pass', '$phone', '$area', '$specialization', '$hospital', '$city', '$latitude', '$longitude')";
mysqli_query($query, $conn);

Něco takového. Doufám, že to pomůže

Odpovězeno 01/09/2015 v 10:41
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more