insert on dublicate verkeerde affected_rows
Ik voer volgende query uit
Code (php)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
insert into
trn_partijen (
id_toernooi,
speler1,
speler2,
ip,
methode,
changedate,
datum,
uitslag)
values
(
48,
608,
610,
"127.0.0.1",
"playerslist",
"2022-04-20 11:25:44",
CURRENT_DATE ,
1
)
,(
48,
596,
608,
"127.0.0.1",
"playerslist",
CURRENT_TIME,
CURRENT_TIME ,
3
)
,(
48,
589,
608,
"127.0.0.1",
"playerslist",
CURRENT_TIME,
CURRENT_TIME ,
3
)
ON DUPLICATE KEY
UPDATE
uitslag = values(uitslag),
gebruiker = values(gebruiker),
methode = values(methode),
changedate = values(changedate),
datum = values(datum)
trn_partijen (
id_toernooi,
speler1,
speler2,
ip,
methode,
changedate,
datum,
uitslag)
values
(
48,
608,
610,
"127.0.0.1",
"playerslist",
"2022-04-20 11:25:44",
CURRENT_DATE ,
1
)
,(
48,
596,
608,
"127.0.0.1",
"playerslist",
CURRENT_TIME,
CURRENT_TIME ,
3
)
,(
48,
589,
608,
"127.0.0.1",
"playerslist",
CURRENT_TIME,
CURRENT_TIME ,
3
)
ON DUPLICATE KEY
UPDATE
uitslag = values(uitslag),
gebruiker = values(gebruiker),
methode = values(methode),
changedate = values(changedate),
datum = values(datum)
Ik krijg volgende info terug vanuit mysqli_affected_rows($con) en mysqli_info($con)
Code (php)
1
2
2
{"status":"succes","count":4,"message":"4 partijen bijgewerkt.
Records: 3 Duplicates: 1 Warnings: 2"}
Records: 3 Duplicates: 1 Warnings: 2"}
Hoe kan ik nu 4 records bijwerken als er maar 3 value groepen zijn En hoe kan ik juiste info terug krijgen?
Er staat ook "warnings 2". Hoe weet ik welke warnings?
Jan
Ik krijg dus niet 1 of 2 maar 4 waar ik 3 verwacht.
1 x 2 = 2 update
= 4
Toevoeging op 21/04/2022 09:23:26:
Voor de liefhebbers om te oefenen :
https://www.plus2net.com/sql_tutorial/sql_update-on-duplicate-key.php
Maar wat houdt de warnings in?
Quote:
To find the detail of the warning, you can use the SHOW WARNINGS command as shown below:
SHOW WARNINGS;
SHOW WARNINGS;
https://www.mysqltutorial.org/mysql-insert-ignore/
Toevoeging op 21/04/2022 21:28:50:
Ik heb zo'n idee dat deze regel onjuist is ;
Wellicht dat column gebruiker bestaat, maar dan moet je één van deze gebruiken.
resultaat
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
(
[0] => Array
(
[Level] => Note
[Code] => 1265
[Message] => Data truncated for column 'datum' at row 1
)
)
[0] => Array
(
[Level] => Note
[Code] => 1265
[Message] => Data truncated for column 'datum' at row 1
)
)
Ik werk zelden met een date veld maar meestal met datetime. De tijd stond er dus te veel bij.
Probleem opgelost en bedankt voor de hulp.
Ter info "gebruiker = values(gebruiker)" is wel degelijk juist hoor. Ik had dat veld gewoon gewist omdat het hier niets ter zake deed maar heb het vergeten bij het update deel. Gebruiker is de persooon welke de gegevens ingevoerd heeft. Speler 1 en speler 2 zijn de effecteve spelers hun id.
Jan