View Single Post
I see you...
NAPse's Avatar
380
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"?