Avatar billede meyer Nybegynder
19. marts 2013 - 12:33 Der er 9 kommentarer og
1 løsning

Hente data fra mySql... fejler

Er der nogen der kan forklare mig hvorfor denne her fra w3schools.com fejler?

$result = mysqli_query($con,"SELECT * FROM Persons");

echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>";

while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['FirstName'] . "</td>";
  echo "<td>" . $row['LastName'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

Hvis jeg i stedet henter fra $row[1] og $row[2] så virker den.

Ved godt det måske er ligemeget, men vil gerne forstå forskellen, er ny i php og mysql :)
19. marts 2013 - 14:38 #1
Den mest nærliggende årsag er, at din tabel Persons ikke har felterne FirstName og LastName.  Hedder de i virkeligheden Firstname eller firstname eller firstName eller lignende?
Avatar billede meyer Nybegynder
19. marts 2013 - 14:54 #2
Aii.. det var da "bare" det, tusind tak :)

Jeg havde bare lavet en copy/paste fra deres site, også oprettelsen af tabellen, så tænkte ikke på at se efter om det var store og små bogstaver :)
19. marts 2013 - 15:17 #3
I så fald er der her svar fra mig.
Avatar billede olebole Juniormester
19. marts 2013 - 15:54 #4
<ole>

Det er på tide at skifte din DB-kode ud med noget tidssvarende. MySQL-API'et er dybt forældet og bruges ikke mere til udvikling nye sider/applikationer. Du kan ikke forvente, at din kode fungerer, når din udbyder en af de næste gange opdaterer PHP på serveren.

Undgå w3schools.com! Siden er fyldt med udeladelser, mangler og seriøse fejl - og underviser, som du ser, i forældet og usikker kode.

Brug i stedet MySQL gennem MySQLI eller PDO. Det gør alle andre PHP-udviklere med respekt for sig selv og deres kode  =)

/mvh
</bole>
Avatar billede meyer Nybegynder
19. marts 2013 - 16:04 #5
Tusind tak Ole, må skifte endnu en gang så, det er 3. gang jeg prøver noget nyt de sidste 2 dage ;) Vil jo gerne starte ud rigtigt på det her :D
Avatar billede meyer Nybegynder
19. marts 2013 - 16:12 #6
Er der nogen steder du kan anbefale mig hvor jeg kan se et RIGTIGT udført script for:

connection

insert

update

delete

og selvfølgelig udskrivning af data?
Avatar billede olebole Juniormester
19. marts 2013 - 16:27 #7
Det ville nok være uklogt at kaste sig ud i det hele på én gang. Tag det i små bidder - webudvikling tager som alle andre fag tid at lære  =)

Jeg har skrevet denne lille guide for at få folk i gang med prepared statements under MySQLI. Den er langtfra dækkende, men kan forhåbentlig få dig igang
Avatar billede meyer Nybegynder
19. marts 2013 - 16:42 #8
Endnu en gang tusing tak :) vil straks kaste mig over den ;)

Problemet er at jeg i et par dage nu har villet konvertere fra ASP og har fulgt med en tutorial fra Lynda, men den er jo tudse gammel, så er rigtigt glad for at du kom ind her og stoppede det, så jeg kunne komme rigtigt i gang, ville sg være surt at udvikle noget og så finde ud af at det også var forældet :)
Avatar billede olebole Juniormester
19. marts 2013 - 17:10 #9
Det var så lidt - det er jo i sidste ende også min egen sikkerhed, det handler om  =)

Mange begyndere tænker: "Pyt med, at mit site ikke er særlig sikkert. Der ligger jo alligevel ikke noget af særlig betydning." Den slags er at betragte som nettets spritbilister! Selvom de nok ikke selv indser, hvor stor fare, de udgør for den almindelige webbruger. I en ideel verden burde de forbydes at skrive webkode.

Sagen er, at det er måden, hvorved store dele af alverdens vira spredes. En 'ubehagelig' person cracker sig igennem en usikker databasekode og får adgang til at lægge virus/malware på sitet.

De brugere, som efterfølgende er så uheldige at komme til sitet via et mere eller mindre tilfældigt link, bliver ganske uforvarende smittet.

Dovenskab og ligegyldighed er dagligt grund til masser af den slags infektioner. Det bør alle, der koder web, være yderst opmærksom på  *o)

Det er altid en god idé at kikke på en artikels oprettelsesdato - og evt. rettelseshistorik (som bør være anført). En anden god rettesnor er, om artiklen giver mulighed for at kommentere. Her vil vidende udviklere ofte lægge rettelser og uddybende forklaringer, hvis muligheden er til stede.

Det giver ikke 100% garanti for troværdigheden, men artikler, som ikke kan kommenteres, kan indeholde bunker af fejl, uden det umiddelbart kan ses - og gamle artikler må som regel formodes at være forældede.
Avatar billede meyer Nybegynder
19. marts 2013 - 21:17 #10
Jeg kan kun være helt enig med dig der :)

Netop derfor er jeg endnu mere glad for hjælpen, så jeg kommer rigtigt fra start med det her php mysqli-projekt, ville jo være helt tåbeligt at starte ud med at lave noget gammelt :D

Og SUPER artikel du har skrevet, den har virkelig hjulpet mig godt i gang (håber jeg), men døm selv her ;)

Jeg lavede en tabel med en menu i mySql og så har jeg "prøvet" at følge det du har lært mig igennem artiklen, dog rendte jeg ind i et problem, men som udgangspunkt så tror jeg at jeg er på rette spor :)

Her er koden:


// Hent hovedmenuer
    $menuerne = $mysqli->prepare('SELECT `menuID`,`menuen` FROM `menu` WHERE `hovedmenu` = ?'); 
    $menuerne->bind_param('i', $hovedmenu);
    $hovedmenu = 1;
    $menuerne->execute();
    $menuerne->bind_result($menuID, $menuen);
    echo '<ul>';
    while ($menuerne->fetch()) {
        echo '<li>' . $menuen .  '</li>';
       
    $undermenuen = $menuID;
// Hent undermenuer
$undermenuer = $mysqli->prepare('SELECT `menuID`,`menuen` FROM `menu` WHERE `undermenu` = ?'); 
    $menuerne->bind_param('i', $undermenu);
    $undermenu = $undermenuen;
    $undermenuer->execute();
    $undermenuer->bind_result($menuID, $menuen);
    echo '<ul>';
    while ($undermenuere->fetch()) {
        echo '<li>' . $menuen .  '</li>';

       
    }
    $undermenuer->close();
    echo '<ul>';
       
    }
    $menuerne->close();
    echo '<ul>';


  $mysqli->close();

Det yderste loop (menuerne) virker fint efter din anvisning, men så prøvede jeg at lave et loop indeni der skal hente undermenuer til hovedmunuen hvis der er nogen, der stopper den så :D Måske du kan fortælle mig hvad jeg gør forkert?

Det jeg dog er mest interesseret i er om DET her så er bedre og mere sikkert end det første jeg kom med, bare så jeg ved om jeg har fattet noget af det :D
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