/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Hvad er T_STRING, T_VARIABLE, T_NUM_STRING~
Fra : Ukendt


Dato : 17-01-03 14:40

Jeg er lige løbet ind i en fejlmelding som rejser et par spørgsmål:

fejlmeldingen lyder:

unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING


Mine spørgsmål er:

Hvad er en T_STRING?
Hvad er en T_VARIABLE?
Hvad er en T_NUM_STRING?

Hvad betyder der T egentlig?

Claus



 
 
Niels Andersen (17-01-2003)
Kommentar
Fra : Niels Andersen


Dato : 17-01-03 15:07

"Claus Nygaard-Pedersen" <cnpatofir.dk> wrote in
<3e28079f$0$119$edfadb0f@dtext02.news.tele.dk>:
> unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING

Det betyder at PHP fandt en double-quote, hvor den forventede at finde en
streng, en variabel eller et tal.

Strenge:
"pølsevogn"
'Elefanter uden snabler'

Variabler:
$girafguf
$a
$hyper[8]

Tal:
45
123.45


Det er ikke sikkert at løsningen er, at skrive en af disse ting i stedet for
eller før den double-quote. Det er bare der den opgiver at tolke koderne.

--
Mvh.
Niels Andersen
http://myplace.dk/articles/getpost/?lang=da

Ukendt (17-01-2003)
Kommentar
Fra : Ukendt


Dato : 17-01-03 15:25

"Niels Andersen" <niels-usenet@myplace.dk> skrev i en meddelelse
news:l6UV9.38551$Hl6.4525781@news010.worldonline.dk...
> "Claus Nygaard-Pedersen" <cnpatofir.dk> wrote in
> <3e28079f$0$119$edfadb0f@dtext02.news.tele.dk>:
> > unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING
>
> Det betyder at PHP fandt en double-quote, hvor den forventede at finde en
> streng, en variabel eller et tal.

Øhh jow........ double-quote hvad er det lige du mener?

> Strenge:
> "pølsevogn"
> 'Elefanter uden snabler'
>
> Variabler:
> $girafguf
> $a
> $hyper[8]
>
> Tal:
> 45
> 123.45
>
>
> Det er ikke sikkert at løsningen er, at skrive en af disse ting i stedet
for
> eller før den double-quote. Det er bare der den opgiver at tolke koderne.

Du har givetvis helt ret!

Jeg har eksempelvis $_SESSION["CONDATA"]["postcode"] som jeg forventer (det
kan fint udskrives med echo) indeholder et postnummer. Lad os for nemheds
skyld sige at postnummeret er "8900".

Og hvis jeg så sætter en sql query up med "SELECT postcode FROM postalcode
WHERE postcode=$_SESSION["CONDATA"]["postcode"]" så er det jeg får fejlen.

Men skriver jeg i stedet "SELECT postcode FROM postalcode WHERE
postcode=8900";

Så ruller det bare.

Det er altså formatet den er gal med?

Claus




Henrik Stidsen (17-01-2003)
Kommentar
Fra : Henrik Stidsen


Dato : 17-01-03 15:36

"Claus Nygaard-Pedersen" <cnpatofir.dk> wrote in
news:3e28124b$0$132$edfadb0f@dtext02.news.tele.dk

> Og hvis jeg så sætter en sql query up med "SELECT postcode FROM
> postalcode WHERE postcode=$_SESSION["CONDATA"]["postcode"]" så
> er det jeg får fejlen.

Du har for mange " i den linie.

--
..: Henrik Stidsen - HS235.dk ::...

Ukendt (17-01-2003)
Kommentar
Fra : Ukendt


Dato : 17-01-03 15:40

"Henrik Stidsen" <idontwantnospam@hs235.dk> skrev i en meddelelse
news:Xns93069D5F9921HS235DK@130.225.247.90...
> "Claus Nygaard-Pedersen" <cnpatofir.dk> wrote in
> news:3e28124b$0$132$edfadb0f@dtext02.news.tele.dk
>
> > Og hvis jeg så sætter en sql query up med "SELECT postcode FROM
> > postalcode WHERE postcode=$_SESSION["CONDATA"]["postcode"]" så
> > er det jeg får fejlen.
>
> Du har for mange " i den linie.

Aha.........

"SELECT postcode FROM postalcode WHERE
postcode=$_SESSION["CONDATA"]["postcode"]" - Hvor? De yderste " er kun brugt
som citattegn her.....

Claus



Niels Andersen (17-01-2003)
Kommentar
Fra : Niels Andersen


Dato : 17-01-03 15:43

"Claus Nygaard-Pedersen" <cnpatofir.dk> wrote in
<3e2815b4$0$124$edfadb0f@dtext02.news.tele.dk>:
> "SELECT postcode FROM postalcode WHERE
> postcode=$_SESSION["CONDATA"]["postcode"]" - Hvor? De yderste " er kun
> brugt som citattegn her.....

Prøv at vise den komplette linje, uden ekstra citat-tegn. :)

Også gerne et par linjer før den, der giver problemer.

--
Mvh.
Niels Andersen
http://myplace.dk/articles/getpost/?lang=da

Ukendt (17-01-2003)
Kommentar
Fra : Ukendt


Dato : 17-01-03 16:04

"Niels Andersen" <niels-usenet@myplace.dk> skrev i en meddelelse
news:YDUV9.38568$Hl6.4529179@news010.worldonline.dk...
> "Claus Nygaard-Pedersen" <cnpatofir.dk> wrote in
> <3e2815b4$0$124$edfadb0f@dtext02.news.tele.dk>:
> > "SELECT postcode FROM postalcode WHERE
> > postcode=$_SESSION["CONDATA"]["postcode"]" - Hvor? De yderste " er kun
> > brugt som citattegn her.....
>
> Prøv at vise den komplette linje, uden ekstra citat-tegn. :)
>
> Også gerne et par linjer før den, der giver problemer.

Gerne:

# Validate postnr to see if it exists in table postalcode

$postsql="SELECT postcode FROM postalcode WHERE
postcode=$_SESSION["CONDATA"]["postcode"]";

sql_open_connection();
$result = sql_enquire_reply($postsql);
sql_close_connection();
if (empty($result)) {
$_SESSION["ERRORS"]["postcode"] = "Ugyldigt postnr.";
}

Dette giver fejlmeldingen:

unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING

Uanset

echo $_SESSION["CONDATA"]["postcode"];

faktisk udskriver "8900" som jeg forventede.

Hvis jeg derimod erstatter:

$postsql="SELECT postcode FROM postalcode WHERE
postcode=$_SESSION["CONDATA"]["postcode"]";

med:

$postsql="SELECT postcode FROM postalcode WHERE postcode=8900";

Så får fungerer det - Desværre kun med dette postnummer.

Claus



Ukendt (17-01-2003)
Kommentar
Fra : Ukendt


Dato : 17-01-03 16:39

Hmmm...... Så fandt jeg en løsning....... Noget tilfældigt.....Men alligevel
en løsning.

I stedet for at skrive:

$postsql="SELECT postcode FROM postalcode WHERE
postcode=$_SESSION["CONDATA"]["postcode"]";

Prøvede jeg:

$tst=$_SESSION["CONDATA"]["postcode"];
$postsql="SELECT postcode FROM postalcode WHERE postcode=$tst";

Øøøhhhhhh Jow......... Mon det så ikke bare var fordi PHP'en ikke kunne
regne ud hvad søren alle de [][] skulle betyde!

Claus



Ukendt (17-01-2003)
Kommentar
Fra : Ukendt


Dato : 17-01-03 16:58

"Claus Nygaard-Pedersen" <cnpatofir.dk> skrev i en meddelelse
news:3e282378$0$120$edfadb0f@dtext02.news.tele.dk...
> Hmmm...... Så fandt jeg en løsning....... Noget tilfældigt.....Men
alligevel
> en løsning.
>
> I stedet for at skrive:
>
> $postsql="SELECT postcode FROM postalcode WHERE
> postcode=$_SESSION["CONDATA"]["postcode"]";
>
> Prøvede jeg:
>
> $tst=$_SESSION["CONDATA"]["postcode"];
> $postsql="SELECT postcode FROM postalcode WHERE postcode=$tst";

Og da query'en selvfølgelig ikke skal falde i vandet hvis der indtastes
andet end tal så justeres til:

$postsql="SELECT postcode FROM postalcode WHERE postcode='$tst' ";

Claus



Kim Emax (17-01-2003)
Kommentar
Fra : Kim Emax


Dato : 17-01-03 17:16

"Claus Nygaard-Pedersen" wrote

> > I stedet for at skrive:
> >
> > $postsql="SELECT postcode FROM postalcode WHERE
> > postcode=$_SESSION["CONDATA"]["postcode"]";

Dit problem er at du ikke må have en $_SESSION variable inde i en streng, du
skal i stedet "klistere" den på strengen:

$postsql="SELECT postcode FROM postalcode WHERE
postcode=" . $_SESSION["CONDATA"]["postcode"];

Det samme gælder, hvis du prøver at smide et funktionskald ind i en streng.

> > Prøvede jeg:
> >
> > $tst=$_SESSION["CONDATA"]["postcode"];
> > $postsql="SELECT postcode FROM postalcode WHERE postcode=$tst";

Her er det en alm variabel du smider ind i strengen, det er tilladt.

--
Kim Emax



Dan Molberg (17-01-2003)
Kommentar
Fra : Dan Molberg


Dato : 17-01-03 17:19

"Kim Emax" <news@remove-emax.dk> wrote in message
news:G_VV9.38625$Hl6.4537545@news010.worldonline.dk...
> Dit problem er at du ikke må have en $_SESSION variable inde i en streng,
du
> skal i stedet "klistere" den på strengen:
>
> $postsql="SELECT postcode FROM postalcode WHERE
> postcode=" . $_SESSION["CONDATA"]["postcode"];
Ikke helt rigtigt, problemet er at men ikke må have typen "array of array"
det skal om sluttes af tuborgklammer, altså:
{$_SESSION["CONDATA"]["postcode"]}



Niels Andersen (17-01-2003)
Kommentar
Fra : Niels Andersen


Dato : 17-01-03 17:47

"Claus Nygaard-Pedersen" <cnpatofir.dk> wrote in
<3e2827ea$0$145$edfadb0f@dtext02.news.tele.dk>:
> Og da query'en selvfølgelig ikke skal falde i vandet hvis der indtastes
> andet end tal så justeres til:
> $postsql="SELECT postcode FROM postalcode WHERE postcode='$tst' ";

Hvis man ikke har styr på hvad postnummeret er, så skal der også escapes.

Jeg plejer dog blot at sørge for, at det er et tal. Især med postnumre er
det sjovt (der er forbløffende mange der skriver både postnummer og bynavn,
hvis der ikke er et felt til bynavnet):

$postnr = (int)@$_REQUEST['postnr'];

"" bliver til 0
"7100" => 4000
"7100 Vejle" => 7100
"Vejle" => 0
"'; DROP DATABASE site_dk; SELECT '" => 0

--
Mvh.
Niels Andersen
http://myplace.dk/articles/getpost/?lang=da

Jacob Atzen (17-01-2003)
Kommentar
Fra : Jacob Atzen


Dato : 17-01-03 17:14

"Claus Nygaard-Pedersen" <cnpatofir.dk> writes:

> $postsql="SELECT postcode FROM postalcode WHERE
> postcode=$_SESSION["CONDATA"]["postcode"]";
>
> Prøvede jeg:
>
> $tst=$_SESSION["CONDATA"]["postcode"];
> $postsql="SELECT postcode FROM postalcode WHERE postcode=$tst";
>
> Øøøhhhhhh Jow......... Mon det så ikke bare var fordi PHP'en ikke kunne
> regne ud hvad søren alle de [][] skulle betyde!

Nej. Det er fordi du hopper ind og ud af "string-mode" (i mangel af et
bedre ord).

$postsql="SELECT postcode FROM postalcode WHERE
postcode=".$_SESSION["CONDATA"]["postcode"];

Burde kunne gøre det.

--
Med venlig hilsen
- Jacob Atzen

Dan Molberg (17-01-2003)
Kommentar
Fra : Dan Molberg


Dato : 17-01-03 17:04

"Claus Nygaard-Pedersen" <cnpatofir.dk> wrote in message
news:3e281b43$0$122$edfadb0f@dtext02.news.tele.dk...
> $postsql="SELECT postcode FROM postalcode WHERE
postcode=$_SESSION["CONDATA"]["postcode"]";

Prøv denne:
$postsql="SELECT postcode FROM postalcode WHERE
postcode='{$_SESSION['CONDATA']['postcode']}'";



Kim Emax (17-01-2003)
Kommentar
Fra : Kim Emax


Dato : 17-01-03 15:39

"Claus Nygaard-Pedersen" wrote

> Øhh jow........ double-quote hvad er det lige du mener?

SHIFT+2

> Og hvis jeg så sætter en sql query up med "SELECT postcode FROM postalcode
> WHERE postcode=$_SESSION["CONDATA"]["postcode"]" så er det jeg får fejlen.

Smid '' (to enkelt qoutes også kaldet pinger) om din var. Det betyder ikke
noget, når der er tale om et tal, men er det en streng, så fejler det....

> Men skriver jeg i stedet "SELECT postcode FROM postalcode WHERE
> postcode=8900";
>
> Så ruller det bare.
>
> Det er altså formatet den er gal med?

hvad får du, når du printer $_SESSION["CONDATA"]["postcode"] ud?

En go ting, når du har brug for at debugge er at smide din SQLstatement ind
i en variabel:

$q = "SELECT postcode FROM postalcode WHERE postcode='".
$_SESSION["CONDATA"]["postcode"] ."'";

så kan du nemt printe din statement ud og se, hvad pokker den prøver på

--
Kim Emax



Ukendt (17-01-2003)
Kommentar
Fra : Ukendt


Dato : 17-01-03 15:51

"Kim Emax" <news@remove-emax.dk> skrev i en meddelelse
news:TzUV9.38564$Hl6.4528955@news010.worldonline.dk...
> "Claus Nygaard-Pedersen" wrote
>
> > Øhh jow........ double-quote hvad er det lige du mener?
>
> SHIFT+2

Selvfølgelig :))))

> > Og hvis jeg så sætter en sql query up med "SELECT postcode FROM
postalcode
> > WHERE postcode=$_SESSION["CONDATA"]["postcode"]" så er det jeg får
fejlen.
>
> Smid '' (to enkelt qoutes også kaldet pinger) om din var. Det betyder ikke
> noget, når der er tale om et tal, men er det en streng, så fejler det....

$_SESSION['CONDATA']['postcode'] giver fejl i SQL QUERY pga. forkert format!

'$_SESSION["CONDATA"]["postcode"]' gør ingen forskel!

> > Men skriver jeg i stedet "SELECT postcode FROM postalcode WHERE
> > postcode=8900";
> >
> > Så ruller det bare.
> >
> > Det er altså formatet den er gal med?
>
> hvad får du, når du printer $_SESSION["CONDATA"]["postcode"] ud?

echo $_SESSION["CONDATA"]["postcode"]; returnerer "8900"

> En go ting, når du har brug for at debugge er at smide din SQLstatement
ind
> i en variabel:

Det gør jeg skam allerede.

> $q = "SELECT postcode FROM postalcode WHERE postcode='".
> $_SESSION["CONDATA"]["postcode"] ."'";
>
> så kan du nemt printe din statement ud og se, hvad pokker den prøver på


Se det er her mine hår bliver endnu mere grå for når jeg skriver skidtet ud
ser det helt rigtigt ud.

Claus



Flemming Joensson (17-01-2003)
Kommentar
Fra : Flemming Joensson


Dato : 17-01-03 16:52

"Claus Nygaard-Pedersen" <cnpatofir.dk> wrote in
news:3e281854$0$142$edfadb0f@dtext02.news.tele.dk:

>> $q = "SELECT postcode FROM postalcode WHERE postcode='".
>> $_SESSION["CONDATA"]["postcode"] ."'";
>>
>> så kan du nemt printe din statement ud og se, hvad pokker den
>> prøver på
>
>
> Se det er her mine hår bliver endnu mere grå for når jeg skriver
> skidtet ud ser det helt rigtigt ud.
>

Hvad står der helt præcist i browseren når laver
echo $q;
Altså skriver din query ud til skærmen.

Hvilken type er feltet postcode i din database?
Hvis det er et tal-felt, så prøv at lave forespørgslen UDEN de to
singlequotes du har omkring $_SESSION["CONDATA"]["postcode"]

Mvh.
Flemming


--
Hvis du vil svare per e-mail skal "fjerndette." fjernes fra
mailadressen.


Søg
Reklame
Statistik
Spørgsmål : 177519
Tips : 31968
Nyheder : 719565
Indlæg : 6408658
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste