Avatar billede BTEngineer Novice
04. marts 2012 - 11:11 Der er 7 kommentarer og
1 løsning

En af mine database tabeller - Felter virker ikke

Hej! :-)

Jeg sidder ikke med et decideret problem, men nærmere noget jeg har oplevet efterhånden et par gange, eftersom jeg er begyndt at benytte mig af PDO (Prepared Statements). Jeg har oplevet at når jeg har tilføjet et nyt felt til databasen, så vil systemet simpelthen bare ikke sætte nogle data ind. Jeg har prøvet at ændre databasetypen m.m. men uden held.

Jeg har fået det til at virke ved:
- At rykke det pågældende felt længere til "venstre", altså mod starten af tabellen, så det ikke ligger i slutningen.

- Slette nogle af de andre felter (fandt to jeg ikke brugte)

De felter der ligger i slutningen af tabellen er typisk nogle med standardværdier, men jeg har aldrig haft problemer med at tilføje et nyt felt, og få indsat data i det..

Bruger typisk Varchar til tekst - til længere tekst benytter jeg TEXT, da LONGTEXT ikke virker i PDO, af hvad jeg har erfaret. Til tal bruger jeg typisk INT, eller Varchar i nogle tilfælde.

Jeg håber på at kunne få et svar på hvorfor den kan drille mig på den måde? :-)

Sig endelig til hvis andre oplysninger skal bruges.

// Henrik
Avatar billede erikjacobsen Ekspert
04. marts 2012 - 11:52 #1
"så vil systemet simpelthen bare ikke sætte nogle data ind" ... der kommer ingen fejlbesked? Og din kode sørger for at du kan se en eventuel fejlbesked?
Avatar billede BTEngineer Novice
04. marts 2012 - 12:05 #2
Den indsætter jo fint i andre felter, undtagen det nye felt. Hvis jeg har problemer, plejer jeg at lave en var_dump, og det har jeg også prøvet, og giver blot NULL.
Avatar billede BTEngineer Novice
04. marts 2012 - 12:06 #3
Men jeg har som sagt ikke noget decideret problem. Det virker fint nu. Og jeg har KUN ændret det, at databasefeltet er blevet rykket længere mod de første felter i tabellen..
Avatar billede erikjacobsen Ekspert
04. marts 2012 - 12:08 #4
Ok. Betyder det så, at du har rykket feltet til venstre, forbi et TEXT/LONGTEXT felt?
Avatar billede BTEngineer Novice
04. marts 2012 - 12:17 #5
Nej. Der er ingen longtext/text i denne tabel. Der er i alt 27 felter, og alle de varchar undtagen id som er int.
Avatar billede Broxigar Praktikant
04. marts 2012 - 13:53 #6
Nu spørger jeg jo sandsynligvis det dummeste spørgsmål som nogen kunne stille, men har du husket at opdatere og gennemtjekke dine queries ?
Avatar billede BTEngineer Novice
05. marts 2012 - 00:02 #7
Som sagt har jeg ikke noget problem i øjeblikket, udover at jeg ikke forstår hvorfor at det hænder sommetider, at jeg simpelthen ikke kan indsætte noget i feltet. Der kommer ingen fejl, der bliver sat ind i de øvrige felter - den ENESTE handling jeg har udført, for at det er kommet til at virke er, at jeg har "flyttet" mit felt, længere mod starten af tabellen dvs:

id, bla, bla1, bla2, bla3, bla4, bla5 ... nyt bla-felt

Det virker ikke, men flytter jeg det så hen på

id, bla, bla1, nyt bla-felt  bla2, bla3, bla4, bla5

Jeg har ikke oplevet det før min brug af Prepared statments.

Når jeg indsætter noget gør jeg følgende:

if ($opret = $mysqli->prepare("INSERT INTO bla_tabel (`bla`, `bla`, `bla`, `bla`, `bla`, `bla`, `bla`) values (?, ?, ?, ?, ?, ?, ?)")) {
   
    $opret->bind_param('sssssss', $bla, $bla, $bla, $bla, $bla, $bla, $bla);
   
    $opret->execute();
   
    $opret->close(); 

    $mysqli->close();
}


Der er ikke problemer med ovenstående kode - den virker i hvert fald. Jeg ønsker bare at vide hvorfor at den pludselig kan overføre sig sådan? Altså når jeg tilføjer et nyt felt i tabellen bla_tabel..

Jeg har tænkt:
- Har jeg oprettet for mange felter i denne database tabel (27 felter?)
- Bruger jeg forkerte databasetyper?

Eller hvad er det der sker? :-)
Avatar billede BTEngineer Novice
19. marts 2012 - 08:02 #8
Lukker..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester