Insert into anders update
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 ?
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
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)
1
2
3
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());
?>
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
Gesponsorde koppelingen:
Wat ik altijd doe, en misschien is het omslachtig, is eerst de record selecteren, en kijken of er wat uit komt.
Dus, zoiets:
Volgens mij snap je dat wel :)
Dus, zoiets:
Code (php)
1
2
3
4
5
6
7
8
9
10
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.');
}
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 :)
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.
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.



