[php/mysql] NOT IN statement ?

Pagina: 1
Acties:
  • 226 views sinds 30-01-2008

  • Longlegg
  • Registratie: Januari 2002
  • Laatst online: 13-04-2022

Longlegg

Danoontje POWERRRRR

Topicstarter
ik wil de volgende query loslaten op mn database

PHP:
1
2
$sqlopties = "SELECT * FROM vragenlijstopties WHERE vraag = '".$_SESSION['b']."' 
AND doelgroep = '$doelgroep' AND optie NOT IN ($res)";


$res is een mysql_query die wat verder bovin mn script staat dat er verder niet toe doet, dit snapt ie dus niet. Wat ik dus wil

ik wil alles van vragenlijstopties selecteren where vraag is een bepaald vraagnr en doelgroep een bepaalde doelgroep, behalve de opties die als resultaat uit de query ($res) komen...

wat is de oplossing ?

p.s. ik heb gezocht maar niet gevonden..

edit:
layout verbeterd ;)

edit:
nu met where;)

[ Voor 17% gewijzigd door Longlegg op 16-06-2004 21:21 ]

Specs


  • djluc
  • Registratie: Oktober 2002
  • Nu online
Alle resultaten van query 1 in een array zetten en dan die array met de functie implode tot een string maken met tussen de items een komma.

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

gorgi_19

Kruimeltjes zijn weer op :9

Sowieso zal deze het niet doen, want je bent het WHERE statement vergeten.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • djluc
  • Registratie: Oktober 2002
  • Nu online
gorgi_19 schreef op 16 juni 2004 @ 21:19:
Sowieso zal deze het niet doen, want je bent het WHERE statement vergeten.
goed wakker ;)

PHP:
1
2
3
//zoiets?
$arr=array('bla', 'blaat2');
$sql="SELECT FROM table WHERE field NOT IN ('".implode(',', $arr)."')";

[ Voor 13% gewijzigd door djluc op 16-06-2004 21:22 ]


Verwijderd

Longlegg schreef op 16 juni 2004 @ 21:17:

$res is een mysql_query die wat verder bovin mn script staat dat er verder niet toe doet, dit snapt ie dus niet. Wat ik dus wil
Is dit eer resultaat van je query of wil je hier met subqueries werken?

Subqueries werkt namelijk niet, tenzij je de allernieuwste mysql hebt draaien.

Je zal zoals eerder als gezegd alles in een string moeten gooien en die dan meegeven in NOT IN

  • Longlegg
  • Registratie: Januari 2002
  • Laatst online: 13-04-2022

Longlegg

Danoontje POWERRRRR

Topicstarter
djluc schreef op 16 juni 2004 @ 21:21:
[...]
goed wakker ;)

PHP:
1
2
3
//zoiets?
$arr=array('bla', 'blaat2');
$sql="SELECT FROM table WHERE field NOT IN ('".implode(',', $arr)."')";
ik ben nu al 1uurtje bezig met deze oplossing maar op 1 of andere manier krijg ik het niet aan de gang.. dus had ik wat anders bedacht:

om het array te vullen, $resgot is een werkende query
PHP:
1
2
3
while ($record6 = mysql_fetch_object($resgot)){
$arr[]=('$record6->antwoord');
}


dan wil ik dus in mn query die array uitlezen met mn not in statement,

PHP:
1
2
$sqlopties = "SELECT * FROM vragenlijstopties WHERE vraag = '".$_SESSION['b']."'
AND doelgroep = '$doelgroep' AND optie NOT IN($arr)";


volgens mij gaat dat array 'vullen' wel goed, maar leest mn query de array wel uit op deze manier ?

Specs


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

PHP:
1
2
$sqlopties = "SELECT * FROM vragenlijstopties WHERE vraag = '".$_SESSION['b']."'
AND doelgroep = '$doelgroep' AND optie NOT IN(".implode(",", $arr).")";

Probeer dat maar eens. ;)

[ Voor 24% gewijzigd door NMe op 16-06-2004 22:45 . Reden: Parameters verkeerd om ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Subquerries werken gewoon niet in MySQL. Wel in de volgende versie (momenteel beta), maar in de huidige versies nog niet. Dus wat je ook doet, dit gaat niet werken.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 16 juni 2004 @ 22:46:
Subquerries werken gewoon niet in MySQL. Wel in de volgende versie (momenteel beta), maar in de huidige versies nog niet. Dus wat je ook doet, dit gaat niet werken.
En waarin mijn oplossing zie jij een subquery dan? :?

Er wordt gewoon in een set met gegevens gekeken, en dat heeft altijd gewerkt, TS pakte het gewoon verkeerd aan. Zie implode().

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 07-04 13:41
Verwijderd schreef op 16 juni 2004 @ 22:46:
Subquerries werken gewoon niet in MySQL. Wel in de volgende versie (momenteel beta), maar in de huidige versies nog niet. Dus wat je ook doet, dit gaat niet werken.
Daar klopt inderdaad geen hout van ;)

Verwijderd

shortcut

Nu maak je een array om daar uiteindelijk een string van te maken!!?

Kan je niet beter gewoon direct het resultaat van je eerste query in een string gooien.

$string .= $object->waarde &",";

en die dan meegeven in je tweede query

Wil je ook je samengestelde queries eens posten? Dan kunnen we er waarschijnlijk wel wat meer mee doen.

echo $sqlopties;

  • djluc
  • Registratie: Oktober 2002
  • Nu online
PHP:
1
2
3
4
5
6
7
8
<?
$arr=array();
while ($record6 = mysql_fetch_object($resgot)){ 
//gekke quotes weg!!!!
$arr[]=$record6->antwoord; 
}
print_r($arr);
?>

[ Voor 21% gewijzigd door djluc op 16-06-2004 23:05 ]


  • Longlegg
  • Registratie: Januari 2002
  • Laatst online: 13-04-2022

Longlegg

Danoontje POWERRRRR

Topicstarter
dat array vullen ging al wel goed, maar toch ff de code van luc gebruikt uitvoer:

code:
1
Array ( [0] => zitdiepte-instelling [1] => zithoogte-instelling )


dan even de echo van $sqlopties
PHP:
1
2
SELECT * FROM vragenlijstopties WHERE vraag = '2' AND doelgroep = 'particulier'
 AND optie NOT IN(zitdiepte-instelling,zithoogte-instelling)


dit werkt dus nog niet..

edit:

layout verneukt

[ Voor 10% gewijzigd door Longlegg op 16-06-2004 23:11 ]

Specs


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

Longlegg schreef op 16 juni 2004 @ 23:10:
dat array vullen ging al wel goed, maar toch ff de code van luc gebruikt uitvoer:

code:
1
Array ( [0] => zitdiepte-instelling [1] => zithoogte-instelling )


dan even de echo van $sqlopties
PHP:
1
2
SELECT * FROM vragenlijstopties WHERE vraag = '2' AND doelgroep = 'particulier'
 AND optie NOT IN(zitdiepte-instelling,zithoogte-instelling)


dit werkt dus nog niet..

edit:

layout verneukt
En jij denkt strings te kunnen gebruiken zonder quotes? Misschien toch nog eens goed kijken op sqlcourse.com? :?

Edit:
PHP:
1
2
$sqlopties = "SELECT * FROM vragenlijstopties WHERE vraag = '".$_SESSION['b']."'
AND doelgroep = '$doelgroep' AND optie NOT IN('".implode("','", $arr)."')";

Doe dat dan voor de gein eens...

[ Voor 17% gewijzigd door NMe op 16-06-2004 23:15 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Longlegg
  • Registratie: Januari 2002
  • Laatst online: 13-04-2022

Longlegg

Danoontje POWERRRRR

Topicstarter
that was it ! stom dat ik over die fukking '' heen keek :) ! maar tnx iedereen ! weer veel geleerd :) !

[ Voor 23% gewijzigd door Longlegg op 16-06-2004 23:21 ]

Specs


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

Verder weet ik niet wat het veld 'vraag' voor datatype heeft, maar als dat een integer is, wil je dan aub die quotes daarbij weghalen. Daar zijn ze dan weer niet nodig... :P

Verder weet ik niet waar je $doelgroep en $_SESSION['b'] vanaf haalt, maar pas je wel op voor SQL injection attacks?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Longlegg
  • Registratie: Januari 2002
  • Laatst online: 13-04-2022

Longlegg

Danoontje POWERRRRR

Topicstarter
NMe84 schreef op 16 juni 2004 @ 23:22:
Verder weet ik niet wat het veld 'vraag' voor datatype heeft, maar als dat een integer is, wil je dan aub die quotes daarbij weghalen. Daar zijn ze dan weer niet nodig... :P

Verder weet ik niet waar je $doelgroep en $_SESSION['b'] vanaf haalt, maar pas je wel op voor SQL injection attacks?
hehe tnx, nee de rest is wel save, ik check overal waar gegevens komen, of ze ook wel daadwerkelijk gepost zijn, en ik haal gevaarlijke tekens weg.

maar tnx iig !!

Specs


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Niet lullig bedoeld, maar dit gaat nergens over. Wat jij nodig hebt is denk ik een goede cursus PHP+MySQL, en daar zijn zat tutorials over te vinden op het web :). Dingen als het vergeten van WHERE, het niet gebruiken van quotes in SQL strings, het stoppen van een PHP array in een SQL string zonder gebruik van implode getuigd van erg weinig basiskennis, iets dat we toch wel vereisen op een forum bedoeld voor de gevorderde computergebruiker :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1

Dit topic is gesloten.