Ik heb een tabel gemaakt waarbij iedere entry Unique moet wezen, maar als iemand toch een zelfde entry maakt dan moet er een melding komen dat dit niet kan.

Hoe vang je dit af??
Doet 'ie automatisch. Krijg je een SQL error. (volgens mij)
Foutafhandeling inbouwen en de juiste error opvangen.
<?php
$query = "INSERT INTO Tabel (1,2,3) VALUES (NULL,'".$email."',1)";
$rs = mysql_query($query, $conn) or die("".mysql_errno()."<BR>".mysql_error()."<BR>");
if(mysql_errno($email) != 0 && mysql_errno == "1062")
{
echo "reeds geregistreed";
}
?>

Heb bovenstaand gemaakt alleen heeft tie het nog niet weet iemand waar het fout gaat?
Op meer dan 1 plek in ieder geval.
Zoals al eerder aangegeven, doe iets aan foutmeldingen, want je hoort toch echt te zien dat de constante mysql_errno niet bestaat.

mysql_errno($email) - slaat nergens op? Wat heeft die email met de mysql error te maken.
Maar sowieso, daar komt hij al niet, want als er iets verkeerd gaat voor je een die() uit.
<?php
$email = "[email protected]";

$query = "INSERT INTO Tabel (id,email,zichtbaar) VALUES (NULL,'".$email."',1)";
$rs = mysql_query($query, $conn);
if(mysql_errno($email) != 0 && mysql_errno == "1062")
{
echo "reeds geregistreed";
}
?>

Zo moet tie zijn dus als iemand een email invuld die al bestaat dan moet hij die error geven.
@Richard

Wat jij als voorbeeld geeft klopt voor geen meter:

Bron:php.net
mysql_errno ([ resource $link_identifier ] )


Je kan daar (is optioneel) een resource link identificatie meegeven, en dat is in jou code $rs. Daar komt nog eens bij dat mysql_errno niet zonder de () kan worden gebruikt, dat gaat een error opleveren, omdat mysql_errno een functie is en niet een constante.

Je controle is ook een beetje dubbel:

<?php
//als mysql_errno() gelijk is aan 1062 (hij geeft een int terug, dus die moet niet tussen quotes staan) dan is die altijd anders dan 0.
if(mysql_errno() == 1062){

?>
De resource identifier is alleen noodzakelijk indien je met meerder connecties werkt op 1 pagina, deze is dus te verwaarlozen in de meeste gevallen (behalve bij mysqli)!
Robert_Deiman schreef op 16.03.2009 09:13

[quote=Bron:php.net]mysql_errno ([ resource $link_identifier ] )

Je kan daar (is optioneel) een resource link identificatie meegeven, en dat is in jou code $rs.[/quote]
Nee, dat weten we in zijn geval niet. $rs is niet de link_identifier, maar de resource van het resultaat van de query. De link identifier is de return value van mysql_connect.
@WillemJan Z

Dat is waar, even niet goed opgelet. :) Maar meestal is die link_identifier in elk geval niet nodig. Bedankt voor het scherpe opletten..:)

Reageren