kijken of het al bestaat
Hoe kan je kijken of een bepaald veld al in de database staat zodat deze niet wordt overschreven?
SELECT ... FROM ... WHERE ...
Als jij iets INSERT en je werkt met een unieke prim. key zal niks worden overschreven volgens mij.
nee idd, dan geeft ie een duplicate errror for entery .....
Bijvoorbeeld: De opgegeven id bestaat al, kies een andere
//bestaat al
die();
}
Als je een duplicate entry krijgt, geeft MySQL een error nummer mee, die kan je opvragen dmv mysql_errno()
Edit
Een duplicate entry geeft errno 1062 terug...
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
Deze error krijg je dan dus.
En hoe zet je deze dus om... (graag in nederlands ;) )
Dus iets met mysql_errno ?
Met deze code krijg ik dus als ik twee keer het zelfde invul wat niet mag: deze waarschuwing:
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in ***.php on line 150
1062:
Maar ik wil dus dat hij zegt: Dit id is al bezet, kies een ander.
Gewijzigd op 01/01/1970 01:00:00 door Arian Stolwijk
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$query = "SELECT veld FROM tabel WHERE unieke_veld = 'unieke_veld'";
$res = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($res) != 0) {
echo "Bestaat al";
} else {
//voeg row toe
}
?>
$query = "SELECT veld FROM tabel WHERE unieke_veld = 'unieke_veld'";
$res = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($res) != 0) {
echo "Bestaat al";
} else {
//voeg row toe
}
?>
Zoeits gebruik ik.. ( kijk zelf even na, niet getest )
Ik hoop dat het duidelijkiss.??
Gewijzigd op 01/01/1970 01:00:00 door niek s
Arian:
mysql_query($query) or die (mysql_errno() . ": " . mysql_error('Er is een fout opgetreden'));
Met deze code krijg ik dus als ik twee keer het zelfde invul wat niet mag: deze waarschuwing:
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in ***.php on line 150
1062:
Maar ik wil dus dat hij zegt: Dit id is al bezet, kies een ander.
Met deze code krijg ik dus als ik twee keer het zelfde invul wat niet mag: deze waarschuwing:
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in ***.php on line 150
1062:
Maar ik wil dus dat hij zegt: Dit id is al bezet, kies een ander.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
if (mysql_errno(je query dinges) == 1062) {
echo "jou error ( iets van Dit id is al bezet,, of wat wou je?";
} else {
//zet er een row bij
}
?>
if (mysql_errno(je query dinges) == 1062) {
echo "jou error ( iets van Dit id is al bezet,, of wat wou je?";
} else {
//zet er een row bij
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$query = ("INSERT INTO tabel (id, naam) VALUES ('".$id."', '".$naam."')");
$res = mysql_query($query) or die(mysql_error('Er is een fout opgetreden'));
if (mysql_errno($res) == 1062) {
die ('Dit id is al bezet');
} else {
echo is toegevoegd';
}
?>
$query = ("INSERT INTO tabel (id, naam) VALUES ('".$id."', '".$naam."')");
$res = mysql_query($query) or die(mysql_error('Er is een fout opgetreden'));
if (mysql_errno($res) == 1062) {
die ('Dit id is al bezet');
} else {
echo is toegevoegd';
}
?>
Maar hij doet het nog niet helemaal :$
Gewijzigd op 01/01/1970 01:00:00 door Arian Stolwijk
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$sql = "SELECT * FROM tabel WHERE naam = '" . $naam . "'";
$res = mysql_query($sql);
if(mysql_num_rows($res) >= 1) {
print 'Dit id is al bezet';
} else {
$sql = "INSERT INTO tabel (id, naam) VALUES ('" . $id . "', '" . $naam . "')";
$res = mysql_query($sql);
}
?>
$sql = "SELECT * FROM tabel WHERE naam = '" . $naam . "'";
$res = mysql_query($sql);
if(mysql_num_rows($res) >= 1) {
print 'Dit id is al bezet';
} else {
$sql = "INSERT INTO tabel (id, naam) VALUES ('" . $id . "', '" . $naam . "')";
$res = mysql_query($sql);
}
?>
Zo doe ik het ongeveer: je kijkt eerst of er al een waarde is met dezelfde naam. Als die waarde er is (mysql_num_rows is dan groter of gelijk aan 1), krijg je een melding dat die naam al bestaat. Anders voegt hij hem toe.
Gewijzigd op 01/01/1970 01:00:00 door Winston Smith
@ Kasper : handig deze uitleg ---> BEDANKT !!
Weer eens bedankt TOP (Y)
De genoemde oplossing van Arjan is vele malen beter. Jouw oplossing heeft de kans dat het fout gaat.