Gå til innhold

Feil med sprintf


Anbefalte innlegg

PHP

$q1 = sprintf("CREATE TABLE IF NOT EXISTS `%s` (

`%s` int(5) NOT NULL auto_increment,

`%s` text NOT NULL,

`%s` text NOT NULL,

`%s` int(5) NOT NULL,

`%s` int(5) NOT NULL,

PRIMARY KEY (`%s`),

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1000",

TABLE_PAGE, FIELD_PAGE_ID, FIELD_PAGE_NAME, FIELD_PAGE_DESCRIPTION, FIELD_CAT_ID, FIELD_SUB_CAT_ID, FIELD_PAGE_ID)

 

Hvorfor fungerer ikke dette?

 

Feilmelding:

Parse error: syntax error, unexpected '(', expecting ',' or ';' in table.php on line 1

Lenke til kommentar
Videoannonse
Annonse

Klikk for å se/fjerne innholdet nedenfor
PHP

$q1 = sprintf("CREATE TABLE IF NOT EXISTS `%s` (

            `%s` int(5) NOT NULL auto_increment,

            `%s` text NOT NULL,

            `%s` text NOT NULL,

            `%s` int(5) NOT NULL,

            `%s` int(5) NOT NULL,

            PRIMARY KEY  (`%s`),

            ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1000",

            TABLE_PAGE, FIELD_PAGE_ID, FIELD_PAGE_NAME, FIELD_PAGE_DESCRIPTION, FIELD_CAT_ID, FIELD_SUB_CAT_ID, FIELD_PAGE_ID)

 

Hvorfor fungerer ikke dette?

 

Feilmelding:

Parse error: syntax error, unexpected '(', expecting ',' or ';' in table.php on line 1

9141714[/snapback]

 

Tror du har missforstått hvordan sprintf fungerer, du skal sette inn variablene som skal ha verdien sin satt inn i %s. Sjekk sprintf() (w3schools) og sprintf() (php.net).

eksempel skript

PHP
<?php

$var1='hei'

$var2='på'

$var3='deg';

$tekst=sprintf("En liten test av sprintf.<br />%s %s %s.<br />Test slutt.",

$var1,$var2,$var3);

echo $tekst;

?>

 

Skriver ut:

En liten test av sprintf.

Hei på deg.

Test slutt.

 

Tror jeg heller bare ville har brukt (tilpass til eget behov, bruker phpmyadmin til å lage tabeller)

PHP
<?php

$q1 = "CREATE TABLE `test` (

`test1` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT ,

`test2` VARCHAR( 10 ) NOT NULL ,

`test3` VARCHAR( 10 ) NOT NULL ,

`test4` VARCHAR( 10 ) NOT NULL ,

`test5` VARCHAR( 10 ) NOT NULL ,

PRIMARY KEY ( `test1` ) )";

mysql_query($q1);

?>

Lenke til kommentar

Nei har ikke misforstått sprintf()

 

 

<?php

define("STRING_1", "Ola");

define("STRING_2", "og");

define("STRING_3", "Kari");

echo sprintf("hei %s %s %s", STRING_1, STRING_2, STRING_3);

?>

Vil gi

"Hei Ola og Kari"

 

 

Poenget med konstantene var å ikke bruke tabell navn i selve koden.

Men ha alt definert i en fil.

Det gjør det mye enklere å endre navn på felt ved en senere anledning.

Endret av kikkazz
Lenke til kommentar

Det er alltid kjekt å legg inn litt debug funksjoner i koden når man jobber med den, for å sjekke at ting blir som forventet. Gjør f.eks slik

PHP
<?php

$q1 = sprintf("CREATE TABLE IF NOT EXISTS `%s` (

            `%s` int(5) NOT NULL auto_increment,

            `%s` text NOT NULL,

            `%s` text NOT NULL,

            `%s` int(5) NOT NULL,

            `%s` int(5) NOT NULL,

            PRIMARY KEY  (`%s`),

            ) 

ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1000",

TABLE_PAGE, FIELD_PAGE_ID, FIELD_PAGE_NAME, FIELD_PAGE_DESCRIPTION, FIELD_CAT_ID, FIELD_SUB_CAT_ID, FIELD_PAGE_ID);

echo "<div>".$q1."</div>";

?>

 

Da vil du se hva slags resultat sprintf lager, og det vil være enklere å debugge :)

 

Mulig du må fjerne komma'et på primary key linja

 

PRIMARY KEY (`%s`), -> PRIMARY KEY (`%s`)

Endret av crowly
Lenke til kommentar
Har nok ikke noe med feilen å gjøre, men du prøver å opprette to felt av "FIELD_PAGE_ID"...

9144911[/snapback]

 

Nei, han gjør ikke det. Han oppretter FIELD_PAGE_ID en gang, og så definerer han det feltet som primary key.

 

Men å legge inn en

 

mysql_query($q1)||die('Create table feil: '.mysql_error());

 

kan også være nyttig, slik at man får se mysql feilmeldingen hvis noe går galt.

Endret av crowly
Lenke til kommentar
Har nok ikke noe med feilen å gjøre, men du prøver å opprette to felt av "FIELD_PAGE_ID"...

9144911[/snapback]

 

Nei, han gjør ikke det. Han oppretter FIELD_PAGE_ID en gang, og så definerer han det feltet som primary key.

 

:blush: Du har rett :whistle:

Lenke til kommentar
Lager en ekstra post, fordi et er noe hærk å redigere en post med flere php felter

 

Hvis du ønsker å sjekke om en tabell eksisterer, og opprette den hvis den ikke gjør det, så ville jeg ha gjordt noe slikt

 

PHP
<?php

if (!mysql_fetch_row(mysql_query("SELECT count(*) FROM test_tab")))

{

$sql="CREATE TABLE ... ";

mysql_query($sql)||die("Lag tabell ":$sql."<br />".mysql_error());

}

?>

9141946[/snapback]

 

Hvorfor skulle du gjøre det på den måten?

Da må du ha 2 db spørringer hvis dem må lages.

Det kan da ikke være fornuftig?

 

Det må jo sjekkes om den finnes uansett,

så da kan det vell gå fint å kjøre det i en spørring?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...