[MySQL] Rij verwijderen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Newbie

PHP Newbie

04/06/2006 11:36:00
Quote Anchor link
heeey

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
 
PHP hulp

PHP hulp

17/11/2024 21:43:37
 
Mebus  Hackintosh

Mebus Hackintosh

04/06/2006 11:42:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

mysql_query("DELETE FROM jouwtabel WHERE id = '1'") or trigger_error (mysql_error());

?>


GR> mebus!
 
PHP Newbie

PHP Newbie

04/06/2006 11:45:00
Quote Anchor link
thx!
 
Frank -

Frank -

05/06/2006 01:57:00
Quote Anchor link
Wanneer je weet hoeveel records je gaat verwijderen, zet dan ook nog even een LIMIT achteraan de query. Het zorgt voor een beetje extra veiligheid in je query. Voor je het weet ben je al je records kwijt... En weg is weg!

Bovenstaande query zou dan worden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
DELETE
FROM
  jouwtabel
WHERE
  id = 1
LIMIT 1

Bij 'id = 1' staan er geen quotes om de waarde 1, dat is niet nodig omdat het een integer is.
 
Willem Jan Z

Willem Jan Z

05/06/2006 02:01:00
Quote Anchor link
Sterker nog, volgens mij zou dat een error geven. (Als het veld echt INTEGER was iig.
 
Frank -

Frank -

05/06/2006 02:09:00
Quote Anchor link
Willem-Jan:
Sterker nog, volgens mij zou dat een error geven. (Als het veld echt INTEGER was iig.
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.
 
PHP Newbie

PHP Newbie

05/06/2006 13:03:00
Quote Anchor link
oke, thx allemaal!
 
PHP Newbie

PHP Newbie

18/08/2006 20:12:00
Quote Anchor link
Er oud topic, maar komt toch van pas.

Waarom kan ik een niet bestaand ID verwijderen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
    }
?>
 
- SanThe -

- SanThe -

18/08/2006 20:25:00
Quote Anchor link
Jouw melding geeft alleen aan dat de query is gelukt, niet of er iets is verwijderd. Probeer deze eens.


if($voerin and (mysql_affected_rows() == 1))
 
PHP Newbie

PHP Newbie

18/08/2006 20:31:00
Quote Anchor link
oki thx,

ik heb nu:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
?>


en dat werkt ;-)
 
- SanThe -

- SanThe -

18/08/2006 20:48:00
Quote Anchor link
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.
 
PHP Newbie

PHP Newbie

18/08/2006 20:53:00
Quote Anchor link
maar als ik het andersom doe, dan is de querie altijd goed.

dus de elseif vervangen door if
 
- SanThe -

- SanThe -

18/08/2006 20:59:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
?>
 
Bo az

Bo az

18/08/2006 20:59:00
Quote Anchor link
@Santhe is niet waar, als de query misluk zal er een die(mysql_error()) gegeven worden.

mysql_query() geeft een resource terug (zie php.net) die in een elseif zetten heeft dus ook geen zin, dit moet werken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(mysql_affected_rows() < 1){
    // fout
}else{
    // goed
}
?>
 
PHP Newbie

PHP Newbie

18/08/2006 21:04:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
}
?>
 
- SanThe -

- SanThe -

18/08/2006 21:09:00
Quote Anchor link
Boaz heeft gelijk en ook de simpelste oplossing.
 
Rob

Rob

18/08/2006 22:36:00
Quote Anchor link
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
 
Frank -

Frank -

18/08/2006 23:14:00
Quote Anchor link
Rob:
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
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...

Een backup gebruik je alleen in noodgevallen, niet (of nauwelijks) voor een stomme fout van een gebruiker. Weg is weg! Dat is het credo.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.