insert on dublicate verkeerde affected_rows

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan R

Jan R

20/04/2022 11:31:15
Quote Anchor link
Hi

Ik voer volgende query uit
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
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)

Ik krijg volgende info terug vanuit mysqli_affected_rows($con) en mysqli_info($con)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
{"status":"succes","count":4,"message":"4 partijen bijgewerkt.
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
 
PHP hulp

PHP hulp

23/04/2024 11:49:02
 
Adoptive Solution

Adoptive Solution

20/04/2022 12:22:48
Quote Anchor link
“The row/s affected value is reported as 1 if a row is inserted, and 2 if a row is updated, unless the API's CLIENT_FOUND_ROWS flag is set.”

https://mariadb.com/kb/en/insert-on-duplicate-key-update/
 
Jan R

Jan R

21/04/2022 08:26:53
Quote Anchor link
Ik krijg dus niet 1 of 2 maar 4 waar ik 3 verwacht.
 
Adoptive Solution

Adoptive Solution

21/04/2022 09:14:05
Quote Anchor link
2 x 1 = 2 nieuw
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
 
Jan R

Jan R

21/04/2022 13:18:38
Quote Anchor link
Ok de som per record dus.

Maar wat houdt de warnings in?
 
Adoptive Solution

Adoptive Solution

21/04/2022 21:13:11
Quote Anchor link
Was effe zoeken.

Quote:
To find the detail of the warning, you can use the SHOW WARNINGS command as shown below:

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 ;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
gebruiker   = values(gebruiker),


Wellicht dat column gebruiker bestaat, maar dan moet je één van deze gebruiken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
gebruiker   = values(speler1),

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
gebruiker   = values(speler2),
 
Jan R

Jan R

22/04/2022 09:22:04
Quote Anchor link
Inderdaad. Had dat ook gevonden na mijn laatste post maar had nog geen tijd om te testen.
resultaat
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
(
    [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
 



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.