Versio

Insert into anders update

Overzicht Reageren

Mike de jong

Mike de jong

09/09/2011 12:25:04
Quote Anchor link
Beste Phphulp dudes,

Ik ben bezig met een scriptje , waarbij ik een insert into moet doen maar als er geen record in de database staat een update

Doe ik dit met INSERT INTO veld waarde ON DUPLICATE KEY UPDATE veld SET waarde , of doe ik het verkeerd ?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
mysql_query('INSERT INTO beurs_users (user_id , beurs_id , inkoop_prijs , aantal) VALUES ('.$data['id'].','.$row['beurs_id'].','.$rows['inkoop_prijs'].','.$aantal.') ON DUPLICATE KEY UPDATE beurs_users SET aantal=' . $row['aantal'] . ' WHERE beurs_id=' . $row['beurs_id'] . ' AND user_id=' . $data['id'])or die(mysql_error());
?>


Even wat getest de bovenstaande sql is fout

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET aantal=11 WHERE beurs_id=1 AND user_id=2' at line 1

Gr Mike
Gewijzigd op 09/09/2011 12:31:58 door Mike de jong
 
PHP hulp

PHP hulp

25/05/2012 04:45:54
Gesponsorde koppelingen:
 
Tim van Norde

Tim van Norde

12/09/2011 20:39:32
Quote Anchor link
Wat ik altijd doe, en misschien is het omslachtig, is eerst de record selecteren, en kijken of er wat uit komt.

Dus, zoiets:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
$check = mysql_query('SELECT id FROM beurs_users WHERE beurs_id=' . $row['beurs_id'] . ' AND user_id=' . $data['id'] . ' LIMIT 1');

if (mysql_num_rows($check)>0)
{
    mysql_query('UPDATE beurs_users SET aantal=' . $row['aantal'] . ' WHERE beurs_id=' . $row['beurs_id'] . ' AND user_id=' . $data['id']);
}
else
{
    mysql_query('INSERT INTO beurs_users (user_id , beurs_id , inkoop_prijs , aantal) VALUES ('.$data['id'].','.$row['beurs_id'].','.$rows['inkoop_prijs'].','.$aantal.');
}


Volgens mij snap je dat wel :)
 
The Force

The Force

12/09/2011 21:03:02
Quote Anchor link
Zoals je zelf al aangeeft Tim is dat omslachtig. Bovendien kan het voorkomen dat na de check door een andere gebruiker een record is toegevoegd en je dus alsnog tegen een fout aanloopt.

Mike, je fout is makkelijk te verhelpen. Zie http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html voor de correcte syntax.
 



Overzicht Reageren

Get Adobe Flash player