[MySQL] Rij verwijderen
Hoe kan ik een rij uit mijn database verwijderen?
Ben nog niet zo goed met MySQL dus ik weet daar de sql code nog niet voor.
En werkt deze het zelfde als de insert?
Greetz
Code (php)
1
2
3
4
5
2
3
4
5
<?php
mysql_query("DELETE FROM jouwtabel WHERE id = '1'") or trigger_error (mysql_error());
?>
mysql_query("DELETE FROM jouwtabel WHERE id = '1'") or trigger_error (mysql_error());
?>
GR> mebus!
thx!
Bovenstaande query zou dan worden:
Bij 'id = 1' staan er geen quotes om de waarde 1, dat is niet nodig omdat het een integer is.
Sterker nog, volgens mij zou dat een error geven. (Als het veld echt INTEGER was iig.
Willem-Jan:
Helaas, MySQL heeft er weer eens geen moeite mee dat iets niet is wat het lijkt te zijn. MySQL slikt alles voor zoete koek, ongeacht of dat problemen gaat opleveren of niet.Sterker nog, volgens mij zou dat een error geven. (Als het veld echt INTEGER was iig.
oke, thx allemaal!
Waarom kan ik een niet bestaand ID verwijderen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$insert = "DELETE FROM
scheldwoorden
WHERE
id = ".$_GET['verwijder']."
LIMIT 1";
$voerin = mysql_query($insert) or die(mysql_error());
if($voerin)
{
$melding_scheld = 'Succesvol verwijderd';
}
else
{
//mail
}
?>
$insert = "DELETE FROM
scheldwoorden
WHERE
id = ".$_GET['verwijder']."
LIMIT 1";
$voerin = mysql_query($insert) or die(mysql_error());
if($voerin)
{
$melding_scheld = 'Succesvol verwijderd';
}
else
{
}
?>
if($voerin and (mysql_affected_rows() == 1))
ik heb nu:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
if(mysql_affected_rows() < 1)
{
$melding_scheld = 'Dit scheldwoord stond niet in de database';
}
elseif($voerin)
{
$melding_scheld = 'Succesvol verwijderd';
}
//else mail
?>
if(mysql_affected_rows() < 1)
{
$melding_scheld = 'Dit scheldwoord stond niet in de database';
}
elseif($voerin)
{
$melding_scheld = 'Succesvol verwijderd';
}
//else mail
?>
en dat werkt ;-)
Als $voerin = mysql_query($insert)... niet gelukt is geeft ie nu waarschijnlijk een foutmelding op mysql_affected_rows() omdat je pas in de elseif() checked of de query is gelukt.
dus de elseif vervangen door if
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if($voerin)
{
if(mysql_affected_rows() < 1)
{
$melding_scheld = 'Dit scheldwoord stond niet in de database';
}
else
{
$melding_scheld = 'Succesvol verwijderd';
}
}
//else mail
?>
if($voerin)
{
if(mysql_affected_rows() < 1)
{
$melding_scheld = 'Dit scheldwoord stond niet in de database';
}
else
{
$melding_scheld = 'Succesvol verwijderd';
}
}
//else mail
?>
mysql_query() geeft een resource terug (zie php.net) die in een elseif zetten heeft dus ook geen zin, dit moet werken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$voerin = mysql_query($insert);
if(mysql_affected_rows() < 1)
{
$melding_scheld = 'Dit scheldwoord stond niet in de database';
}
if(!isset($melding_scheld) && $voerin)
{
$melding_scheld = 'Succesvol verwijderd';
}
else
{
//mail
}
?>
$voerin = mysql_query($insert);
if(mysql_affected_rows() < 1)
{
$melding_scheld = 'Dit scheldwoord stond niet in de database';
}
if(!isset($melding_scheld) && $voerin)
{
$melding_scheld = 'Succesvol verwijderd';
}
else
{
}
?>
Boaz heeft gelijk en ook de simpelste oplossing.
Frank:
Voor je het weet ben je al je records kwijt... En weg is weg!
tenzij je slim bent, en om de zoveel tijd een backup maakt :P
Gewijzigd op 01/01/1970 01:00:00 door Rob
Rob:
tenzij je slim bent, en om de zoveel tijd een backup maakt :P
En dan mag jij vervolgens de gegevens van de backup gaan invoeren in de huidige database... Ik kan je vertellen dat je hier een akelig goede procedure voor moet schrijven om problemen te voorkomen. En een complexe database met een stuk of honderd verschillende tabellen met een hele berg onderlinge relaties, maakt dat er niet eenvoudiger op...Frank:
Voor je het weet ben je al je records kwijt... En weg is weg!
tenzij je slim bent, en om de zoveel tijd een backup maakt :P
Een backup gebruik je alleen in noodgevallen, niet (of nauwelijks) voor een stomme fout van een gebruiker. Weg is weg! Dat is het credo.