Avatar billede evilfish Nybegynder
29. juni 2006 - 18:13 Der er 13 kommentarer og
1 løsning

Mysql insert, med forkert PHP kode i

Hej eksperter.

Jeg har en database, hvor jeg er igang med at smide nogle data ind. Problemet er jeg får denne fejlmedelelse:

"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 '1,'','','','',''' at line 2"

Denne fejl opstår i PHP koden her:

        $insert = "
        INSERT INTO dov_raids (Raidheadline, Raiddate, Gathtime, Starttime, Endtime, Description)
        VALUES '$_POST[headline]','$_POST[date]','$_POST[gathtime]','$_POST[startime]','$_POST[endtime]','$_POST[aims]'
        ";

Kort fortalt, har jeg smidt 1 i den første form, 2 i den næste osv. Jeg kan ikke forstå hvorfor '$_POST[headline]' virker når resten ikke gør. Nogle der har en forklaring?

Min database felter er sat op til at modtage VARCHAR, så tallene skulle hoppe ind uanset hvad.
Avatar billede pidgeot Nybegynder
29. juni 2006 - 18:33 #1
Der skal parantes uden om dine VALUES - altså

        $insert = "INSERT INTO dov_raids (Raidheadline, Raiddate, Gathtime, Starttime, Endtime, Description) VALUES ('$_POST[headline]','$_POST[date]','$_POST[gathtime]','$_POST[startime]','$_POST[endtime]','$_POST[aims]')";
Avatar billede evilfish Nybegynder
29. juni 2006 - 18:47 #2
Dette bevirkede at fejlen forsvandt, men den indsætter ikke 2,3,4,5 og 6 - kun 1
Avatar billede evilfish Nybegynder
29. juni 2006 - 18:48 #3
Tror problemet ligger i den ikke kan hente fra form 2-6 og indsætte dem
Avatar billede pidgeot Nybegynder
29. juni 2006 - 18:51 #4
Lige præcist.

Hvis der er tale om individuelle forms, bliver kun den ene af dem submittet (da det er sådan HTML forms engang fungerer). Dvs. de andre data aldrig bliver sendt.

Hvis det er en form med nogle felter der deler navne, fungerer din ide ikke - du skal enten bruge unikke navne til alle felterne, eller sætte [] efter navnene så du får et array du kan gå igennem i dit PHP-script.
Avatar billede evilfish Nybegynder
29. juni 2006 - 18:56 #5
Det er tale om en form, og der er ingen af dem der deler navne.
Avatar billede pidgeot Nybegynder
29. juni 2006 - 18:59 #6
Så er problemet vel snarere at du aldrig prøver at få fat på de data/har samme fejl hvor du sætter dem ind. Kontroller dine feltnavne, og lav evt. en print_r($_POST) på den side der sætter dem ind, så du kan se hvad der bliver sendt.
Avatar billede pidgeot Nybegynder
29. juni 2006 - 19:00 #7
Ah, vent - tror jeg misforstod dig lidt. Se bort fra første sætning i den sidste kommentar :)
Avatar billede evilfish Nybegynder
29. juni 2006 - 19:36 #8
Jeg har nu lavet dette på min side:

Raid headline: <? echo $_POST[headline]; ?><br>
Raid date: <? echo $_POST[raiddate]; ?><br>
Raid gathtime: <? echo $_POST[gathtime]; ?><br>
Raid starttime: <? echo $_POST[starttime]; ?><br>
Raid endtime: <? echo $_POST[endtime]; ?><br>
Raid aims: <? echo $_POST[aims]; ?><br>

Så her burde jeg kunne se hvad der kommer ud. Desuden har jeg fjernet alle min ID tags i min form, og derved fik jeg nummer 2 til at gå igennem. Dog de andre gør ikke. Underligt. Variabel navnene er ens
Avatar billede pidgeot Nybegynder
29. juni 2006 - 19:42 #9
Må jeg se din form? Og har du kontrolleret op mod outputtet fra print_r($_POST)?
Avatar billede evilfish Nybegynder
29. juni 2006 - 19:53 #10
<form name="form1" method="post" action="admin_newraid.php">
      <table width="74%"  border="0" align="center" cellpadding="0" cellspacing="0">
        <tr>
          <td width="31%">Raid headline: </td>
          <td width="69%"><input name="headline" type="text" size="50"></td>
        </tr>
        <tr>
          <td>Date:</td>
          <td><input name="raiddate" type="text" size="30"></td>
        </tr>
        <tr>
          <td>Gathering time: </td>
          <td><input name="gathtime" type="text" size="10">
          (hh:mm)</td>
        </tr>
        <tr>
          <td>Starttime:</td>
          <td><input name="starttime" type="text" size="10">
            (hh:mm)</td>
        </tr>
        <tr>
          <td>Endtime:</td>
          <td><input name="endtime" type="text" size="10">
            (hh:mm)</td>
        </tr>
        <tr>
          <td valign="top">Aims/Description:</td>
          <td><textarea name="aims" cols="50" rows="7"></textarea></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td><input type="submit" name="Submit" value="Create Raid"></td>
        </tr>
      </table> 
      </form>

Jeg har ikke kontrolleret med print_r($_POST) endnu
Avatar billede evilfish Nybegynder
29. juni 2006 - 19:55 #11
Array ( [headline] => 1 [raiddate] => 2 [gathtime] => [starttime] => [endtime] => [aims] => [Submit] => Create Raid [date] => )
Avatar billede pidgeot Nybegynder
29. juni 2006 - 20:04 #12
Det virker fint her: http://pidgeot.no-ip.org/718321.php (midlertidigt sat op)

Du har vel ikke noget inputvalidering inden der nulstiller de data hvis de er ugyldige?
Avatar billede evilfish Nybegynder
29. juni 2006 - 20:17 #13
............................................................................................................................. *gemmer sig i sin hule*

DOH! - IHH! - Hvorfor laver man altid sådan nogle dumme fejl!
Tak for at hjælp en nød i... ja nød. :)
Avatar billede pidgeot Nybegynder
29. juni 2006 - 20:18 #14
*grin* Så gerne - skulle det være en anden gang ;)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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