Avatar billede khalus Nybegynder
14. maj 2009 - 19:03 Der er 3 kommentarer og
1 løsning

SQL syntaks for variabler i PHP

Dette er ikke et problem jeg søger at få løst, men derimod forklaret.

Hvorfor virker følgende kodestykke kun når jeg enkapsulerer variablerne $var i "'. $var . '". Jeg har læst masser af steder på nettet, i tutorials osv. (eksempel: http://www.spoono.com/php/tutorials/tutorial.php?id=19), at det skulle være nok med to anførselstegn, altså "$var". Det virker som en rigtig besværlig måde at implementere SQL i php, at man skal bruge først anførselstegn, derefter apostrof, så punktum og så videre.

$query = 'INSERT into content (headline,text,picture,cat) VALUES ("' . $headline . '","' . $text . '","' . $picture . '","' . $cat . '")' or die(mysql_error());
Avatar billede baitianlong Nybegynder
14. maj 2009 - 19:17 #1
$query = "INSERT into content(headline,text,picture,cat) VALUES ('$headline ','$text','$picture','$cat')";
$result = MYSQL_QUERY($query) or die($MYSQL_ERROR);
while($row = MYSQL_FETCH_ASSOC($result)) {
    $headline = $row['headline'];
    ...osv...
}


Din $query er din sql saetning, men din 'exception-handler' (or die) skal ligge paa selve query'en

Men m.h.t. det du taler om er problemet at du har single-quotes ' rundt om din sql saetning. Check min placering af ' og "
Avatar billede cpfrande Nybegynder
15. maj 2009 - 12:03 #2
Halløj,

Det er slet ikke besværligt at arbejde med PHP over mod MySQL. Det er faktisk ret simpelt.

Du skal tænke på, at din $query variabel bruger du som en streng til at definere din SQL-sætning. Dvs. i stedet for du skriver:

$query = "SELECT text FROM content WHERE id='kontakt_mig'";

så vil du have 5-tallet defineret ud fra en anden variabel. PHPs syntaks kan tillade dette, men det skal gøres på en bestemt måde, nemlig på denne:

$query = "SELECT text FROM content WHERE id='" . $id . "'";

$id kan derfor indeholde strengen "kontakt_mig", "forside" eller hvad nu ellers du har.

Når du smider en variabel ind i en streng skal det gøres ved at slutte strengen, sætte variablen og så starte en ny streng, som så samles sammen (hvis man sidder og læser koden).

Det betyder at du på sin vis gør følgende:

$query = "streng1" . $variabel . "streng2";
De tre ting bliver så samlet til en store streng i variablen $query, som du benytter som din sql-sætning senere i din mysq_query() metode.

Så der er ikke noget underligt ved det. Det er ganske alm. PHP syntaks, når du arbejder med variabler, og har på sin vis intet med SQL at gøre. Det kunne lige så godt have været en alm. streng:

$velkomst_tekst = "Kære " . $navn . ", velkommen til mit site!";

Jeg håber, at du er lidt mere med nu...
Avatar billede khalus Nybegynder
26. maj 2009 - 09:46 #3
Undskyld for det sene svar.

baitianlong: Tak for rådet med exception-handleren. Mht. syntaksen i php, så kan jeg, som forklaret, ikke få det til at virke selv om jeg bytter om på rækkefølgen af dobbelt-apostrof og enkelt-apostrof.

cpfrande: Mange tak for den logiske forklaring på, hvorfor "syntaksen" er som den er. Det hjalp mig til at forstå, hvordan det fungerer, så jeg kan undgå problemer i fremtiden. Det virker også fornuftigt nok, sådan som du skriver det der.

Jeg er stadig forvirret omkring andres måde at sætte PHP-variabler ind i SQL-kommandoer, men det må være deres problem, for nu har jeg forstået en tand mere af sproget.
I må meget gerne begge to poste svar.

Hilsen kalus
Avatar billede cpfrande Nybegynder
26. maj 2009 - 10:08 #4
Hej Kalus,

Ja, det kan være besværligt til tider at forstå andres koder og hvorfor de gør, som de nu gør. Med tiden kommer man mere ind i det, men det vil altid være svært at finde ud af, hvad en given person har tænkt i det moment, som han har kodet tingene :-)

Jeg er glad for, at du kun bruge svaret.

Ha' en go' dag.
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