Oprettet man. d. 17. september 2012 kl. 12:49:23

konnerup
konnerup (8.635 point. Point ude: 120)

Brug af Arrays til MySQL forespørgsler

Jeg skal bruge et system, hvor man ud fra en form, kan oprette en MySQL tabel. Jeg havde tænkt, at man skulle skrive navnet i formen, og jeg så kunne bruge $_POST[] arrayet til sætte navnet på tabellen, men jeg kan ikke rigtig få det til at virke..

Min kode ser således ud:

$name = $_POST["titel"];

$query = "CREATE TABLE $name (id INT AUTO_INCREMENT, link VARCHAR(50))";

...........
Jeg har inkluderet min database forbindelse

Jeg har også prøvet at sætte variablen ind således: ".$name."
Men det fungerer heller ikke.

Jeg håber nogen kan hjælpe mig :)

Skrevet man. d. 17. september 2012 kl. 13:00:33| #1

konnerup
konnerup (8.635 point)
Jeg har selvfølgelig os afsluttet med:
mysql_query($query);

Skrevet man. d. 17. september 2012 kl. 13:27:00| #2

Det virker ikke gennemtænkt at oprette nye tabeller - bedre at have få tabeller og bruge et felt til at adskille tingene.

Men du skal tage og be' MySQL selv fortælle dig hvad der er galt:

  mysql_query($query) or die(mysql_error());

Skrevet man. d. 17. september 2012 kl. 13:31:47| #3

konnerup
konnerup (8.635 point)
Det foregår inde fra en Admin side, hvor det skal være muligt at oprette et album, hvor der kan tilføjes billeder.. Kan du anbefale en bedre løsning, ville det være rigtig fint :)

Skrevet man. d. 17. september 2012 kl. 13:43:21| #4

olebole
olebole (216.878 point)
<ole>

Du kan oprette et felt med et tal/tekst, som angiver albummet. Så kan du have alle album i samme tabel.

Det vigtigste råd, du kan få, er dog nok at smide det gamle og forældede MySQL-API langt væk og i stedet komme igang med at kode i MySQLI - eller evt. PDO  =)

/mvh
</bole>

Skrevet man. d. 17. september 2012 kl. 14:01:12| #5

konnerup
konnerup (8.635 point)
Så hvert album får et id, og et navn?

Hva så med med de billeder der uploades, som skal tilhøre de forskellige album?
Jeg har indtil videre lagt sti'en til billeder ind i databasen..
Og var os det jeg havde forestillet mig lidt med det her.
Sådan, at hvert billede får sit eget ID i tabellen, som er albummet.
Jeg synes måske selv, det er en ret indviklet metode, men jeg har ikke lige kunne se hvordan ellers..

Det med MySQLI, har jeg forsøgt at læse lidt om, men jeg er i forvejen meget ny inden for PHP og MySQL, da jeg kun har programmeret i 2-3 mdr.

Skrevet man. d. 17. september 2012 kl. 14:10:43| #6

olebole
olebole (216.878 point)
"Så hvert album får et id, og et navn?" >> Nej, et ID eller et navn.

"Hva så med med de billeder der uploades, som skal tilhøre de forskellige album?" >> Du indsætter stien til hvert billede i tabellen - og samtidigt indsættes det ID (album), billedet tilhører.

At du er helt ny, gør det endnu mere presserende at undgå dårlige vaner og komme igang med MySQLI hurtigst muligt. Begynd evt. med denne guide  *o)

Skrevet man. d. 17. september 2012 kl. 14:13:28| #7

jogii
jogii (31.856 point)
Nu kender jeg ikke til php, men jeg synes der er noget galt med denne linie:

$query = "CREATE TABLE $name (id INT AUTO_INCREMENT, link VARCHAR(50))";

Skulle der ikke stå noget i stil med

$query = "CREATE TABLE " + $name  + " (id INT AUTO_INCREMENT, link VARCHAR(50))";

?

Skrevet man. d. 17. september 2012 kl. 14:17:34| #8

jogii
jogii (31.856 point)
En anden ting er dog, du skal passe med med SQL-injections. Man kan meget nemt indtaste ting i din formular, som ødelægger hele dit system.

Skrevet man. d. 17. september 2012 kl. 14:17:48| #9

konnerup
konnerup (8.635 point)
Hvis jeg forstår det ret, så skal jeg ikke bruge AUTO_INCREMENT, men istedet selv definere et id til billederne, og derefter, i hvert album, hente de data der har den rigtige værdi?

Og tak for guiden, den vil jeg få kigget på :)

Skrevet man. d. 17. september 2012 kl. 14:19:23| #10

konnerup
konnerup (8.635 point)
Jogii.

Jeg er opmærksom på SQL-injection, jeg har bare ikke skrevet det med her :)

Skrevet man. d. 17. september 2012 kl. 14:53:47| #11

olebole
olebole (216.878 point)
@jogii: Hvis man er opmærksom på SQL-injections benytter man ikke MySQL, men MySQLI eller PDO  *o)

I PHP parses variabler, som er escaped af dobbelte gåseøjne, så på dét punkt er spørgers syntaks korrekt. Til gengæld skal et felt med auto incrementing være en primary key:

$query = "CREATE TABLE $name (id INT AUTO_INCREMENT, link VARCHAR(50), PRIMARY KEY (id))";

Skrevet man. d. 17. september 2012 kl. 15:48:19| #12

jogii
jogii (31.856 point)
olebole, jamen jeg kan da se jeg skal lade være med at blande mig i noget jeg ikke har forstand på :o)

Skrevet man. d. 17. september 2012 kl. 19:02:40| #13

olebole
olebole (216.878 point)
jogii: Princippet er godt nok. Faktisk kan jeg bedst lide din syntaks, da den syntaksfarver variablen i min IDE og derfor mindsker antallet af potentielle fejlkilder  *o)

Dog er der lige den detalje, at + operatoren kun anvendes til addition i PHP. Strengkonkateneringsoperatoren (sikke et ord!) er et punktum i PHP. Men idéen var god nok  =)

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   


Seneste spørgsmål

Hjælp ønskes til to løkker, der driller...

Oprettet den 18. juni 2013 kl. 15.28
allandk giver 30 point for svar | Giv et svar »

Faa xml out put som en variable

Oprettet den 18. juni 2013 kl. 14.08
techboy992 giver 30 point for svar | Giv et svar »

PHP Programmør søges!

Oprettet den 18. juni 2013 kl. 00.50
Japsen giver 0 point for svar | Giv et svar »







IT Kurser
Samarbejdspartnere

Udgiver · © 2013 Computerworld A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger