Avatar billede saison Nybegynder
15. april 2004 - 22:14 Der er 11 kommentarer og
2 løsninger

Variabel i mysql_query

Er følgende ikke muligt, hvis ikke, hvordan skal jeg så løse det:

if(!$a){
$a = '' } else {
$a = "AND kategori = $_GET[a]"; }

if($b){
$b = " AND b = $_GET[b]";
} else { $b = '' }

$result = mysql_query("SELECT * FROM e WHERE c LIKE '%$_GET[s]%' OR d LIKE '%$_GET[s]%' $a $b");
Avatar billede detox Nybegynder
15. april 2004 - 22:25 #1
Det skulle du nok kunne, men du manlger nogle: ' og ; prøv:

if(!$a){
$a = ''; } else {
$a = "AND kategori = '$_GET[a]'"; }

if($b){
$b = " AND b = '$_GET[b]'";
} else { $b = ''; }

$result = mysql_query("SELECT * FROM e WHERE c LIKE '%$_GET[s]%' OR d LIKE '%$_GET[s]%' $a $b");
Avatar billede dennismp Nybegynder
15. april 2004 - 22:26 #2
Jo det er muligt.. Har lige rettet lidt småting:

if(!$a) {
  $a = ''
}
else {
  $a = "AND kategori = ' " . addslashes($_GET['a']) . "' ";
}

if($b){
  $b = " AND b = '" . addslashes($_GET['b']) . "' ";
}
else {
  $b = '';
}

$result = mysql_query("SELECT * FROM e WHERE c LIKE '%". addslashes($_GET['s']) . "%' OR d LIKE '%" . addslashes($_GET['s']) . "%' $a  $b") or die(mysql_error());
Avatar billede dennismp Nybegynder
15. april 2004 - 22:28 #3
Hov, nogle mulige fejl rettet.

if(empty($_GET['a'])) {
  $a = ''
}
else {
  $a = "AND kategori = ' " . addslashes($_GET['a']) . "' ";
}

if(! empty(_GET['b'])){
  $b = " AND b = '" . addslashes($_GET['b']) . "' ";
}
else {
  $b = '';
}
Avatar billede detox Nybegynder
15. april 2004 - 22:30 #4
dennismp -> Husk osse lige at afslutte:
$a = '' //  $a = '';
og så skal man passe lidt på med addslashes(), hvis 'magic quotes gpc' er slået til risikerer du at få for mange escapes på.
Avatar billede detox Nybegynder
15. april 2004 - 22:33 #5
Så vil jeg foretrække denne metode:

if (!get_magic_quotes_gpc()) {
  $kategori = addslashes($_GET['a']);
} else {
  $kategori = $_GET['a'];
}
Avatar billede dennismp Nybegynder
15. april 2004 - 22:33 #6
detox: tak.

Jeg må vænne mig til at ikke alle slår det "skidt" fra :-)
Avatar billede saison Nybegynder
16. april 2004 - 22:01 #7
Tak for det og godt i kan hjælpe hinanden :o)
Avatar billede saison Nybegynder
16. april 2004 - 22:16 #8
Men jeg får stadig samme fejl som før.

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /httpd.www/rd.php on line 27
($antal = mysql_num_rows($result);)

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /httpd.www/rd.php on line 74
(while ($row = mysql_fetch_array($result)))
Avatar billede detox Nybegynder
16. april 2004 - 22:19 #9
Så prøv med: or die() og se om det giver en meningsfuld fejlmeddelelse:

$result = mysql_query("SELECT * FROM e WHERE c LIKE '%$_GET[s]%' OR d LIKE '%$_GET[s]%' $a $b") or die(mysql_error());
Avatar billede detox Nybegynder
16. april 2004 - 22:52 #10
En anden mulighed er at lave et print af forespørgslen og se om den indeholder, hvad den skal:

print("SELECT * FROM e WHERE c LIKE '%$_GET[s]%' OR d LIKE '%$_GET[s]%' $a $b");
Avatar billede saison Nybegynder
17. april 2004 - 00:40 #11
Den skriver det fint nok ud når jeg bruger print. Der er ingen problemer hvis jeg ikke vælger at sætte $b til noget, det er først når $b er med at den giver problemer.
Avatar billede dennismp Nybegynder
17. april 2004 - 00:44 #12
Kan du ikke skrive det sql-udtryk, som fejler, her? og evt hvad mysql_error() returner
Avatar billede saison Nybegynder
17. april 2004 - 00:49 #13
Neeeeeeeeeeeeeej...... 'b' er område.
den hedder area i min mysql_query - men amt i databasen.... Doh.

Nå, det må i undskylde, men tak for hjælpen alligevel!!
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