10. september 2006 - 18:24
Der er
3 kommentarer og
1 løsning
Mysql: Create Table
Hej
Jeg har et problem med følgende kode, hvorfor kommer mine data i site_aaa, men tabellen site_kat_$kat bliver ikke oprettet?
*************************************
$sql = 'CREATE TABLE `site_kat_$kat` ('
. ' `id` INT(11) NOT NULL AUTO_INCREMENT, '
. ' `titel` VARCHAR(200) NOT NULL, '
. ' `indhold` LONGTEXT NOT NULL, '
. ' `datestamp` TIMESTAMP(14) NOT NULL, '
. ' `sort` INT(4) NOT NULL,'
. ' UNIQUE (`id`)'
. ' )';
$sql2 = "INSERT INTO `site_aaa` (`kat`, `sort`, `titel`, `titel_link`, `link`)
VALUES ('site_kat_$kat', '$sort', '$titel', '$titel_link', '$link')";
mysql_query($sql2);
mysql_query($sql);
***************************************
10. september 2006 - 18:34
#1
Det er vist meningen at $kat skulle erstattes af en variabel, ikke? Så skal den første linie se sådan ud, eftersom strengen er i apostroffer:
$sql = 'CREATE TABLE `site_kat_'.$kat.'` ('
10. september 2006 - 18:41
#2
Andre ting der lige er værd at nævne:
1) Hvis en kolonne er auto_increment, skal den være PRIMARY KEY, så du bør nok skrive det i stedet for UNIQUE (tror ikke MySQL selv implicerer det).
2) Det lader til du opretter en tabel pr. kategori, til trods for at strukturen er identisk i dem. Normalt vil det være noget nemmere at administrere og arbejde med hvis du i stedet nøjes med en enkelt tabel der så har et ekstra felt til at angive kategorien.
10. september 2006 - 20:50
#3
tak det hjalp med "$sql = 'CREATE TABLE `site_kat_'.$kat.'` ('"
Havde troet når 'site_kat_$kat' virker som value, ville det også virke det andet sted.
Skriv et svar og du får point :=)
10. september 2006 - 22:48
#4
Forskellen er at dine apostroffer i $sql2-linien angiver strenge for MySQL, ikke PHP - det er kun de yderste der gør det, altså "erne.