In eenzelfde table tegelijk INSERT en UPDATE

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sasa

sasa

21/12/2007 22:47:00
Quote Anchor link
Hallo,

Ik heb hier een probleempje met het update van een table wanneer je er tegelijk iets in insert. Hier is het script met betrekking tot deze kwestie:

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
<?

mysql_query("INSERT INTO algemeen (fotonaam, datum, comment, alt, paginanaam, paginaid, imagesx, imagesy, dbdatum)

VALUES ('$naam', '$datum', '$_POST[elm1]', $_POST[kort]', '$_POST[pagina1]', '$id', '$x', '$y', '$dbdatum')"
);



mysql_query("INSERT INTO geschiedenis (paginanaam, fotonaam, datum, comment, alt, dbdatum, paginaid, imagesx, imagesy)

VALUES ('$_POST[pagina1]' , '$naam' , '$datum' , '$_POST[elm1]' , '$_POST[kort]' , '$dbdatum' , '$id', '$x', '$y')"
);

mysql_query("UPDATE algemeen SET fotonaam='$naam' , datum='$datum' , alt='$_POST[pagina1]',
imagesx='$x', imagesy='$y' WHERE paginaid='news'"
);
?>


Nu wordt de table algemeen wel geüpdate, maar er wordt niets in geïnesert. Het vreemde is als ik hetzelfde doe, maar zonder de fotonaam... dan gaan deze bewerkingen wel. - hierbij:

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
<?
mysql_query("INSERT INTO algemeen (datum, comment, paginanaam, paginaid, dbdatum)

VALUES ('$datum', '$_POST[elm1]', '$_POST[pagina1]', '$id' , '$dbdatum')"
);


mysql_query("UPDATE algemeen SET datum='$datum' , alt='$_POST[pagina1]' WHERE paginaid='news'");



mysql_query("INSERT INTO geschiedenis (paginanaam, datum, comment, dbdatum, paginaid)

VALUES ('$_POST[pagina1]' , '$datum' , '$_POST[elm1]' , '$dbdatum' , '$id')"
);
?>
 
PHP hulp

PHP hulp

20/11/2024 00:11:48
 
Joren de Wit

Joren de Wit

21/12/2007 23:02:00
Quote Anchor link
Je controleert nergens of je queries wel gelukt zijn? Je krijgt derhalve dus ook geen foutmelding als er iets mis gaat! Ga dus eerst eens foutafhandeling toepassen...

Verder zou ik als ik jou was, mijn queries ook eens wat netter uitschrijven. Dat geeft veel meer overzicht:
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
19
20
21
22
23
24
25
26
27
28
<?php
$sql
= "INSERT INTO algemeen (
            fotonaam,
            datum,
            comment,
            alt,
            paginanaam,
            paginaid,
            imagesx,
            imagesy,
            dbdatum )
        VALUES (
            '"
.$naam."',
            '"
.$datum."',
            '"
.$_POST['elm1']."',
            '"
.$_POST['kort']."',
            '"
.$_POST['pagina1']."',
            '"
.$id."',
            '"
.$x."',
            '"
.$y."',
            '"
.$dbdatum."' )
        "
;

if(!$res = mysql_query($sql))
{

    trigger_error(mysql_error().'<br />In query: '.$sql);
}

?>

Verder zul je in bovenstaande nog op de nodige plaatsen gebruik moeten maken van mysql_real_escape_string() om de input te beveiligen...
 
Sasa

sasa

22/12/2007 13:02:00
Quote Anchor link
Blance,

Allereerst erg bedankt voor de tip, uw script werkt perfect!
Maar wat bedoel je met "mysql_real_escape_string()", hoe werkt dat nou juist?
 
W W

W W

22/12/2007 13:04:00
Quote Anchor link
Beste sasa,
Kijk even op http://www.php.net/mysql_real_escape_string
Gewijzigd op 01/01/1970 01:00:00 door W W
 
Sasa

sasa

22/12/2007 13:13:00
Quote Anchor link
Voor wat is dit eigenlijk nodig?
 
W W

W W

22/12/2007 13:15:00
Quote Anchor link
Om injections tegen te gaan. Een soort van beveiliging. Als mensen proberen je query te verlengen zorgt deze functie ervoor dat er slashes in je ingevoerde injection staan. Hierdoor kan de injection niet plaats vinden. Daarnaast geeft de link die ik je gaf genoeg informatie. Neem gewoon de tijd om het te lezen.
 



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.