[PHP] [MYSQL] query pakt variabele niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik heb een variabele genaamd $pagetype
Deze heeft de waarde : home-standaard

Als ik deze variabele in een query gebruik krijg ik een foutmelding dat hij deze query niet kan uitvoeren. Maar wanneer ik 'home-standaard' hard in de query zet doet hij het wel.

DOet niet:
PHP:
1
$pagetgname = mysql_result(mysql_query("SELECT typetgID FROM ttype WHERE typename='$pagetype'"), 0);


Doet wel:
PHP:
1
$pagetgname = mysql_result(mysql_query("SELECT typetgID FROM ttype WHERE typename='home-standaard'"), 0);


Mag ik misschien een '-' teken niet in deze variabele gebruiken ofzo? Hoe kan ik dit variabale dan toch gebruiken??

Alvast bedankt

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:31

gorgi_19

Kruimeltjes zijn weer op :9

echo je query eens.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Wat doet de query als je een variabele gebruikt die bv hoi bevat?

Always shoot for the moon. Even if you miss you will land among the stars...


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Leer jezelf aan om variabelen niet in een string te zetten, maar het geheel aan elkaar te plakken met punten zoals dit:

PHP:
1
$pagetgname = mysql_result(mysql_query("SELECT typetgID FROM ttype WHERE typename='".$pagetype."'"), 0);

Acties:
  • 0 Henk 'm!

  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 18-09 21:03

Sosabowski

nerd

Verwijderd schreef op 31 maart 2004 @ 13:17:
Deze heeft de waarde : home-standaard

wanneer ik 'home-standaard' hard in de query zet doet hij het wel.
Volgens mij zit hier ergens de fout. De variabele is van het type string?

zelf vind ik het mooier om
PHP:
1
"SELECT typetgID FROM ttype WHERE typename='" . $pagetype .  "'"


edit: te laat...

[ Voor 10% gewijzigd door Sosabowski op 31-03-2004 13:24 ]

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


Acties:
  • 0 Henk 'm!

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Misschien is het beter om een mogelijke oplossing te bieden of helpen te zoeken naar de oplossing. Conventies zijn niet zo van belang denk ik.

Probeer eens na de query deze te echoen en ook mysql_error() erbij zetten. Als je dit niet al hebt is error_reporting(E_ALL) bovenaan de pagina wel handig voor debuggen.

Voorbeeld hoe ik het zou doen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
error_reporting(E_ALL);

$sql = "SELECT typetgID FROM ttype WHERE typename='$pagetype'";
$result = mysql_query($sql);
 if (!$result) {
  echo "Query kon niet worden uitgevoerd. SQL is <b>\"$sql\"</b><BR>";
  echo mysql_error();
  exit;
 }
$myrow = mysql_fetch_array($result);
$typetgID = $myrow["typetgID"];

[ Voor 38% gewijzigd door seamus21 op 31-03-2004 13:37 . Reden: foute zinsopbouw ]

Always shoot for the moon. Even if you miss you will land among the stars...


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Osiris schreef op 31 maart 2004 @ 13:21:
Leer jezelf aan om variabelen niet in een string te zetten, maar het geheel aan elkaar te plakken met punten zoals dit:

PHP:
1
$pagetgname = mysql_result(mysql_query("SELECT typetgID FROM ttype WHERE typename='".$pagetype."'"), 0);
Ok, maar waarom dan??

Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

zowieso qua troubleshooting denk ik makkelijker om

$Result=mysql_Query(je query) or die(mysql_Error());

te gebruiken, en een andere functie voor mysql_result te zoeken:
Recommended high-performance alternatives : mysql_fetch_row(), mysql_fetch_array(), mysql_fetch_assoc() and mysql_fetch_object().

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Verwijderd schreef op 31 maart 2004 @ 13:31:
[...]

Ok, maar waarom dan??
Ik vind het sowieso "netter" en handiger staan, ivm met de highlighting (UltraEdit) zoals je dat ook ziet in de [php]-tag ziet.
Verder krijg je problemen als je een string maakt met enkele quotes (doe jij niet overigens), want dan wordt de variabele niet geparsed, maar letterlijk inc $ etc overgenomen. Wat het resultaat is van én dubbele quotes én in de string enkele gebruiken, dat weet ik niet precies. Maar als "mijn" methode werkt, dan moet je maar geen enkele quotes in een string gebruiken, want dan f*cked het blijkbaar je var toch op :)

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 31 maart 2004 @ 13:31:
[...]


Ok, maar waarom dan??
offtopic:
Dat is hetzelfde als dat je zou vragen wáárom je 80 moet rijden op de neerlandse wegen. Het hóeft niet, maar de kans is wel groter dat het dan fout gaat..

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok bedankt voor al het advies, en zal deze gebruiken. Maar het probleem is nog niet opgelost ;). Ik kom er niet uit. Wat kan ik nu het beste doen dan?

Acties:
  • 0 Henk 'm!

Verwijderd

Is het niet zo dat je het = teken alleen kan gebruiken bij getallen en dat je voor Strings LIKE moet gebruiken?

PHP:
1
WHERE typename='" . $pagetype .  "'"

wordt dan:
PHP:
1
WHERE typename LIKE '" . $pagetype .  "'"

[ Voor 20% gewijzigd door Verwijderd op 31-03-2004 16:01 ]


Acties:
  • 0 Henk 'm!

  • MichelVH
  • Registratie: Oktober 2001
  • Laatst online: 16-09 20:54
Nee, LIKE moet je gebruiken als je wildcards wilt gebruiken

Don't be afraid of the dark, be afraid of what it hides


Acties:
  • 0 Henk 'm!

Verwijderd

Echo je query dan eens, en kijk wat erin zit. Waar komt $pagetype vandaan? Wordt die via GET parameters doorgegeven? Dan is de kans groot dat je $_GET['pagetype'] moet gebruiken

Acties:
  • 0 Henk 'm!

Verwijderd

Alle knotsen, als het na bovenstaand adviezen en aanwijzingen nóg niet wil dan moet je toch echt eens gaan kijken of er van te voren al niet wat mis gaat, zoals Denial zegt, waar komt $pagetype vandaan en wat zit erin..

Dit werkt namelijk gegarandeerd:

PHP:
1
2
3
$pagetype = "home-standaard";
$result = mysql_query("SELECT typetgID FROM ttype WHERE typename='" . $pagetype . "')";
echo $query;


...

Acties:
  • 0 Henk 'm!

  • InZane
  • Registratie: Oktober 2000
  • Laatst online: 01:06
Verwijderd schreef op 31 maart 2004 @ 16:06:
Echo je query dan eens, en kijk wat erin zit. Waar komt $pagetype vandaan? Wordt die via GET parameters doorgegeven? Dan is de kans groot dat je $_GET['pagetype'] moet gebruiken
Begin idd het groooote vermoeden te krijgen dat het een Global probleem is.
Kan bijna niet anders.
Pagina: 1