Avatar billede Svane55 Nybegynder
05. november 2009 - 17:12 Der er 6 kommentarer og
1 løsning

Array indeholdende variabler

Jeg har et array ($querystring)der indeholder en række querrystrings til MySql DB.

Nogle af disse querrystrings indeholder variabler.

Eks.
'SELECT question, text FROM spoergsmaal_nationale_sprog WHERE lang = $lang  ORDER BY ID'

Når jeg henter querrystring fra array´et virker det ikke efter hensigten.
eks.
$select = $this->querystring[$this->querrystringnumber];
$res = mysql_query($select);

Hvis jeg derimod "hardcoder" det:

$select = "SELECT question, text FROM wwviews_spoergsmaal_nationale_sprog WHERE lang = $lang  ORDER BY ID";
       
$res = mysql_query($select);

Virker det fint.

Er der et eller andet med arrays og variabler jeg ikke har fået fat i, eller er det et andet sted problemet ligger?
Avatar billede Svane55 Nybegynder
05. november 2009 - 17:14 #1
Det skal lige siges at uden variablen i array´et er der ingen problemer
Avatar billede Svane55 Nybegynder
05. november 2009 - 17:16 #2
eller hvis $lang erstattes af det id nummer (1234 etc.) den repræsenterer
Avatar billede Slettet bruger
05. november 2009 - 17:17 #3
Når du opretter et key i et array bliver alle variabler fortolket med det samme. Det illustreres bedst med et lille eksempel.

<?php
$tekst = "Eksperten.dk er sejt!";
$array[0] = $tekst;
$tekst = "Eksperten.dk er ikke sejt!";
echo $array[0]; //Eksperten.dk er sejt!
?>

Jeg kan ikke lige give dig en (let) løsning med det samme, men jeg kan da prøve at udtænke en.
Avatar billede tjaz Nybegynder
05. november 2009 - 17:20 #4
hvis jeg forstår dig ret, er svaret:

du kan ikke gemme en variabel i et array, det vil altid være værdien af en variabel du gemmer i et array, f.eks.:

$test = 1234;
$hmm = 5678;

$array = array($test, $hmm);

så vil indholdet af dit array

Array
(
  [0] => 1234
  [1] => 5678
)

du kan ikke lave et array så indholdet bliver

Array
(
  [0] => $test
  [1] => $hmm
)

Hvis det er tilfældet, vil du være nødt til at lave en værdi, som i princippet godt kunne være #value

som du så laver en replace på med den aktuelle værdi af din variabel, når du skal exec din sql, f.eks.

$sqlString = "SELECT FROM test WHERE value = #value;";

$sql = str_replace("#test", $test, $sqlString);

så vil din sql string blive til:

SELECT FROM test WHERE value = 1234;


Håber det var svar på dit spørgsmål
Avatar billede Slettet bruger
05. november 2009 - 17:24 #5
Ja, det er en mulighed, men besværligt er det godt nok.
Avatar billede Svane55 Nybegynder
05. november 2009 - 17:30 #6
Ja det var jo en mulighed.

Findes der ikke en art escape carrectors som gør at arrayet opfatter $lang som ren tekst og ikke gør noget ved det
Avatar billede Slettet bruger
05. november 2009 - 17:50 #7
Jo, single quotes i stedet for dobbel quotes (gåseøjne). Eventuelt sat sammen:

$array[] = "Dette er en tekst.\nPå flere linjer.\nMed" . '$variabel' . "i.";

Dette får desværre ikke PHP til at opfatte variablen når du så bruger den som database-query :(
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