Sorry, men logikken din er desverre litt på bærtur.
Kode
if(mysqli_num_rows($query) < 0) { //Denne evalueres ALLTID som false. Du vil ikke kunne få negativt antall rader fra en spørring.
echo "The email: " . $_POST['delete'] . " does not exist in our records";
}
elseif(!mysqli_query($conn, $sql)) { //Denne evalueres som !true ved "suksessfull" spørring(som "alltid" vil skje). **
echo "Could not delete data!";
}
else { //Denne meldinga kjører derfor uansett input. Raden blir ikke sletta, men du vil få denne meldinga som output.
echo "You have deleted your information from our site. We hope you will come back!";
}
** Fra databasehåndteringssytemet sitt perspektiv vil en spørring som "sletter" alle rader som har
skey=x og
email=y anses som suksessfullt selv om det ikke fantes noen rader med disse verdiene. Moff nevte dette, men vet ikke helt om du forstod det. Bruk
mysqli_affected_rows() fremfor å sjekke at
mysqli_query() ikke returnerer false.
Her er et eksempel på forsøk på å slette en rad som ikke eksisterer. Som du ser returnerer mySQL en sann verdi til php scriptet ditt.
Kode
> DELETE FROM form WHERE secretKey='finnesikke' AND email='finnes@heller.ikke';
Query OK, 0 rows affected (0.00 sec)
Noe i denne duren er nok
noe mer fornuftig.
Kode
if(mysqli_num_rows($query) < 1) {//Denne hører til SELECT spørringen og har "ingen ting" med neste spørring å gjøre. elseif her gir derfor ikke mening.
echo "The email: $email does not exist in our records. <br/>";
}
mysqli_query($conn, $sql); // DELETE spørringen kjøres
if(mysqli_affected_rows($conn) > 0){ //Denne hører til DELETE spørringen.
echo "You have deleted your information from our site. We hope you will come back!<br />";
}
else{
echo "Could not delete data!<br />";
}
Jeg får det ikke til å henge på greip at rader slettes uten at både
skey og
email stemmer overens i database og spørring.
Er du helt sikker på at dette skjer? Har du gått inn i databasen og sjekket, eller har du stolt på dine egne "feilmeldinger"?