[SQL] Vreemde insert

Pagina: 1
Acties:

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Ik heb net een hoop geklus gedaan... eindelijk me insert statement af...

Maar wat blijkt... voegt hij 2 records toe met 1 insert, de eerste volledige, de tweede alleen een deel van de velden...

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
                $sql = "insert into player_stats values ('', '".$firstname."', '".$secondname."', '".$commonname."', '".$club."', '".$job."', ";
                $sql.= "'".$verygood1."', '".$verygood2."', '".$verygood3."', '".$verygood4."', '".$verygood5."', '".$good1."', '".$good2."', '".$good3."', '".$good4."', '".$good5."', '".$average1."', '".$average2."', '".$average3."', '".$average4."', '".$average5."', '".$poor1."', '".$poor2."', '".$poor3."', '".$poor4."', '".$poor5."', '".$verypoor1."', '".$verypoor2."', '".$verypoor3."', '".$verypoor4."', '".$verypoor5."', ";
                $sql.= "'".$gverygood1."', '".$gverygood2."', '".$gverygood3."', '".$gverygood4."', '".$gverygood5."', '".$ggood1."', '".$ggood2."', '".$ggood3."', '".$ggood4."', '".$ggood5."', '".$gaverage1."', '".$gaverage2."', '".$gaverage3."', '".$gaverage4."', '".$gaverage5."', '".$gpoor1."', '".$gpoor2."', '".$gpoor3."', '".$gpoor4."', '".$gpoor5."', '".$gverypoor1."', '".$gverypoor2."', '".$gverypoor3."', '".$gverypoor4."', '".$gverypoor5."', ";
                $sql.= "'".$length."', '".$posture."', '".$dbpos."', '".$rating."', '".$potential."', ";

                $sql_temp = "select AttribName from en_playerattributes where AttribType = 1";
                $res = mysql_query($sql_temp);
                while ($row = mysql_fetch_array($res))
                {
                    $attrib = strtolower($row[AttribName]);
                    $sql.= "'".$$attrib."', ";
                }
                $sql.= "'".date("Y-m-d H:i:s", mktime())."', '".$row[name]."', '".$row[email]."')";
                $res = mysql_query($sql);

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Echo de query eens

Verder zal MySQL ook een date functie hebben, waarom gebruik je die niet?

[ Voor 77% gewijzigd door gorgi_19 op 17-07-2003 21:00 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
MySQL:
1
insert into player_stats values ('', 'Andrés', 'Mendoza', '', 'Club Brugge', 'Player', 'Acceleration', 'Aggression', 'Agility', 'Anticipation', 'WorkRate', 'Consistency', 'Anticipation', 'Consistency', 'Corners', 'Crossing', 'Anticipation', 'Bravery', 'LongShots', 'Consistency', 'Strength', 'Balance', 'Teamwork', 'Positioning', 'Bravery', 'Movement', 'Balance', 'Corners', 'Penalties', 'LongShots', 'LongThrows', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'Tiny', 'Overweight', 'AM L FWD L ', '61', 'Domestic star', 'verypoor', 'verypoor', 'verypoor', 'poor', 'good', 'verygood', 'average', 'average', 'verypoor', 'average', 'verygood', 'poor', 'verygood', '', '', '2003-07-17 12:09:08', '', '')


Bij de 2de query neemt lijkst hij dit te doen :

MySQL:
1
insert into player_stats values ('', 'Andrés', 'Mendoza', '', 'Club Brugge', 'Player' ...... '2003-07-17 12:09:08', '', '')


De andere waardes doe hij niet, maar ik heb geen 2 querys er in staan

[ Voor 102% gewijzigd door Parcye op 17-07-2003 22:00 ]

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 23:20

JaQ

Misschien is het geen slecht idee om de kolommen ook te benoemen bij je insert statement.
Dus in de trant:

SQL:
1
2
3
4
insert into tabel 
( kolomnaam, kolomnaam, kolomnaam) 
values 
(waarde, waarde, waarde);


Op die manier voorkom je in ieder geval "halve" inserts. Denk er ook eens aan om kolommen
die zeker gevuld moeten worden ook verplicht te maken.

offtopic:
Kijk eens goed naar het ontwerp van je tabelletje. Die is volgens mij niet helemaal tot de derde normaalvorm genormaliseerd. Ik ben echt geen sql purist, maar dit is wel een beetje erg gortig.

Egoist: A person of low taste, more interested in themselves than in me


  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Met kolomnamen is het probleem niet opgelost helaas :(

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


  • cimbom
  • Registratie: Juni 2001
  • Laatst online: 26-04-2024

cimbom

Just Kidding

edit: laat maar ik zie het al

Komt het mischien doordat je sql_temp een geen resultaat teruggeeft? Mischien bestaan er geen attributen? Kijk maar eens

[ Voor 212% gewijzigd door cimbom op 18-07-2003 11:34 ]


  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Maar dat is toch niet de reden dat er 2 records worden toegevoegd als je maar 1 keer de statement uitvoert...

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


  • cimbom
  • Registratie: Juni 2001
  • Laatst online: 26-04-2024

cimbom

Just Kidding

Nee zal niet.. Maar ik zie ook niks fout als ik het zo bekijk.. Ik ben ook geen php expert, maar naar mijn idee is wat je doet goed.

  • Kix@$$
  • Registratie: December 2001
  • Laatst online: 21-08 15:33
Zou het kunnen dat je te veel velden in je insert hebt ten opzichte van je tabel. Mischien omdat je de veldnamen niet in je query meegeeft (Zoals normaal INSERT INTO tbl_Blaat (strVeldnaam) VALUES ('veldnaam')) dat hij er dan zelf een 2de regel van maakt ofzow.

Maar: Als ik jou was zou ik eerst eens kijken of je een sub-tabel van die poor/good etc dingen kan maken. Dan wordt et ten eerste veel overzichtelijker en ten tweede ook duidelijker.

Het is geen directe oplossing voor je probleem maar waarschijnlijk is het dan wel opgelost.

:)

  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
wel aan zitten denken, maar het gaat hier straks om 100 mensen die op 1 club stemmen, met 50 man op te stemmen, dus reken uit 5000 stemmen per club, 50 clubs per land, straks 30 landen... is 7.500.000 stemmen

Omdat mijn data import is zonder id's is voornaam, achternaam, nicknaam, club en beroep de key, mijn reports hebben wel een id die als unieke key gebruikt wordt.

het is de bedoeling dat per speler/staff lid ALLES! iedere keer wordt ingevld dus je krijgt geen lege velden in je database... daarom dacht ik, alles in een lange rij...

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 21:11
In regel 11 heb je 2x een $ teken staan.
En zijn die $row[...] nou ook zelf array's?

Maar die AttribName wat doen die? Zijn dat hetzelfde als die gverygood* velden?
Dan heb je hier dan ws. een hele grote tabel. Je moet opletten dat je geen dingen teveel wil posten.

let the past be the past.


  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
$$attrib....

$attrib = $row['AttribName'] bijvb 'pace'

dus ik wil $pace hebben...

omdat ik in de report een input veld heb met de naam 'pace'

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Het ligt echt aan die pagina...

Zelfde SQL query in MySQL_Front werkt perfect...

Ik heb geprobeerd met een 'mysql_insert_id' te tonen, die is netjes 1 bij de eerste keer, maar in de db staan er dan 2...

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Heb je soms een onclick->submit op je form submit button in de html?
Dan wordt je form 2x gesubmit als je 1x op de button klikt.

Who is John Galt?


  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Mar dan zou de insert id toch op het eind van de pagina gewoon 2 moeten zijn en niet 1...

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Schopje...

Ik heb de sql statement in phpMyAdmin geprobeerd, gaat super

Maar mijn script :( nope

[ Voor 16% gewijzigd door Parcye op 20-07-2003 12:52 ]

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 23:20

JaQ

Parcye schreef op 20 July 2003 @ 12:52:
Schopje...

Ik heb de sql statement in phpMyAdmin geprobeerd, gaat super

Maar mijn script :( nope
Zou het dan niet aan het script dat je er omheen hebt gebakken liggen? (en dus niet aan je sql). Misschien maar eens rustig stap voor stap debuggen..

Egoist: A person of low taste, more interested in themselves than in me


  • Parcye
  • Registratie: Maart 2001
  • Laatst online: 24-08-2017
Nou dat dacht ik dus ook...

dus dacht ik... als ik als eerste regel in me script even ophaal wat het hoogste ID is..

en aan het einde dat were doe...

En het is bij de eerste keer opvragen 'n' en bij de laatste keer opvragen 'n+1' heeft hij toch maar ECHT! een record toegevoed... ik heb nu aan de server beheerder gevraagd of hij inde log kan kijken of het niet toevallig 2 keer wordt uitgevoerd, eenkeer als een action vanuit de form en de andere keer op een andere manier, het vreemde is er wordt maar een keer visueel uitgevoerd... want anders zou ik 'n' en 'n+1' krijgen bij keer 1, en keer 2 'n+1' en op het einde 'n+2'

"Als je het kan bedenken, kan het gemaakt worden" Parcye - 14 januari 2002


  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
draai het script eens op een andere server

als je er echt niet uitkomt wil ik het wel ff op m'n eigen servertje hier testen, maar dan heb ik wel je script en dump van de (structuur van de) relevante tabellen nodig
Pagina: 1