Toon posts:

[SQL] Parameter error?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik maak gebruik van een ADO-connectie naar een Access-database en ik script in PHP. Nu geeft ADO aan dat ik een parameter mis, terwijl er wel een waarde is voor de variabele ($watchlist is een array uiteraard ;) ). Ook als ik gewoon een cijfer invoer (waarvan het id wel bestaat in de database) geeft hij aan dat ik een parameter mis. Als ik er enkele quotes omheen zet krijg ik overigens ook geen error van "datatype mismatch". De kolom id is autonumber, dus een integer, eveneens als de waardes in de array. Het gaat om het volgende stukje code:
PHP:
1
2
3
4
5
6
if(!empty($watchlist[$i]))
              {
              $naam_q = $conn->execute("SELECT naam FROM werkgevers WHERE id = ".$watchlist[$i]."");
              $naam = $naam_q->Fields(0);
              echo $naam->value;
              }


Wie helpt mij uit de brand?

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

moet het niet
PHP:
3
$naam_q = $conn->execute("SELECT naam FROM [werkgevers] WHERE id = ".$watchlist[$i]."");
zijn?

EDIT: ow, ik dacht dat het zo moest :)
wou alleen even helpen :|

[ Voor 94% gewijzigd door Snake op 04-03-2006 22:12 ]

Going for adventure, lots of sun and a convertible! | GMT-8


  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 02-01 15:55
snake903 schreef op zaterdag 04 maart 2006 @ 22:08:
moet het niet
PHP:
1
$naam_q = $conn->execute("SELECT naam FROM [werkgevers] WHERE id = ".$watchlist[$i]."");
zijn?
Nee dat hoeft niet hoor die blokhaken zijn niet nodig...

@TS: Het is ook handig als je de error even erbij zet daar kunnen we iets mee..

If I can't fix it, it ain't broken.


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
De 2 extra "" aan het eind horen er niet volgens mij.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Die maken niets uit, doe ik ook vaak.

Going for adventure, lots of sun and a convertible! | GMT-8


  • NaZ-
  • Registratie: Juli 2002
  • Niet online

NaZ-

Hoeblablahoeblabla

P_de_B schreef op zaterdag 04 maart 2006 @ 22:13:
De 2 extra "" aan het eind horen er niet volgens mij.
Ik ben ook pas begonnen met PHP/MySQL, maar volgens mij gaat het fout omdat je

PHP:
1
"SELECT naam FROM werkgevers WHERE id = ".$watchlist[$i]."");


gebruikt ipv

PHP:
1
"SELECT naam FROM werkgevers WHERE id = '.$watchlist[$i].'");


Dus ' ipv ", want met een " begin je zo'n query en eindig je je query..

En welke foutmelding krijg je eigenlijk?

[ Voor 10% gewijzigd door NaZ- op 04-03-2006 22:20 ]

AMD Pentium 4 32+, 2056MB DDR-ROM, 60INCH HD, Logitech Muis, MS-Toeter


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
NaZ- schreef op zaterdag 04 maart 2006 @ 22:19:
[...]


Ik ben ook pas begonnen met PHP/MySQL, maar volgens mij gaat het fout omdat je

PHP:
1
"SELECT naam FROM werkgevers WHERE id = ".$watchlist[$i]."");


gebruikt ipv

PHP:
1
"SELECT naam FROM werkgevers WHERE id = '.$watchlist[$i].'");


Dus ' ipv ", want met een " begin je zo'n query en eindig je je query..

En welke foutmelding krijg je eigenlijk?
Nee, ' om de variabele moet je gebruiken als het een text parameter betreft, in dit geval is het een numerieke waarde, dan moet je geen single quotes gebruiken.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • ID-College
  • Registratie: November 2003
  • Laatst online: 08-04 21:22
Niet dat het veel uit maakt lijkt mij, maar waarom haal je die twee " niet weg?:
PHP:
1
2
3
4
//dus niet:
$naam_q = $conn->execute("SELECT naam FROM werkgevers WHERE id = ".$watchlist[$i].""); 
//maar
$naam_q = $conn->execute("SELECT naam FROM werkgevers WHERE id = ".$watchlist[$i]);

[ Voor 73% gewijzigd door ID-College op 04-03-2006 22:32 ]


Verwijderd

Controleer eens goed de veldnamen. Die foutmelding met het woord "parameter" krijg je nogal eens wanneer je een typfout hebt gemaakt.

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 11:59

DizzyWeb

Ondertiteld

Wat is $conn voor 'n class? Wat doet execute() precies?

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
als je het 100% zeker wilt weten plaats dan single quotes (') om de DATA, en backquotes (`) om veld-/tabelnamen.

This message was sent on 100% recyclable electrons.


Verwijderd

Topicstarter
@TS: Het is ook handig als je de error even erbij zet daar kunnen we iets mee..
De foutmelding is "syntax error missing operator in query expression"

De twee "" laat ik staan om het voor mezelf overzichtelijk te houden.

De naam van de tabel was fout, het moest werknemers zijn ipv werkgevers.. bedankt voor de tip :) !

$conn is overigens de ADO-verbinding met de database en execute() is het commando om daar een query op los te laten

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 11:19

aex351

I am the one

PHP:
1
$conn->execute("SELECT naam FROM werkgevers WHERE id = '".$watchlist[$i]."' ");


Dit zou moeten werken. Zo plaats ik mijn vars in query's namelijk ook ;) . Wat je ook kon doen is de dubbel quotes om de var weg laten plus de puntjes, er zaten namelijk quotes om het al gehele query veld heen.

mogelijkheid nummer 2 :
PHP:
1
$conn->execute("SELECT naam FROM werkgevers WHERE id = '$watchlist[$i]' ");


mogelijkheid nummer 3 :
PHP:
1
$conn->execute('SELECT naam FROM werkgevers WHERE id = '.$watchlist[$i].' ');


Misschien is het ook wat verstandiger om eerst wat te oefenen met de php syntax in combinatie met mysql functies via php dan direct met een database layer aan de slag te gaan ?

[ Voor 123% gewijzigd door aex351 op 05-03-2006 02:51 ]

< dit stukje webruimte is te huur >


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 08-04 22:44

Creepy

Tactical Espionage Splatterer

aex351 schreef op zondag 05 maart 2006 @ 02:40:
PHP:
1
$conn->execute("SELECT naam FROM werkgevers WHERE id = '".$watchlist[$i]."' ");


Dit zou moeten werken. Zo plaats ik mijn vars in query's namelijk ook ;) . Wat je ook kon doen is de dubbel quotes om de var weg laten plus de puntjes, er zaten namelijk quotes om het al gehele query veld heen.
Een ID veld is doorgaans een nummeriek veld. Waarom gebruik je quotes in je query om dat veld heen? In de meeste gevallen levert dit een SQL error op.
mogelijkheid nummer 2 :
PHP:
1
$conn->execute("SELECT naam FROM werkgevers WHERE id = '$watchlist[$i]' ");
Hiervoor geld hetzelfde.. Ook de vars rechtstreeks in de string plakken is niet echt netjes.
mogelijkheid nummer 3 :
PHP:
1
$conn->execute('SELECT naam FROM werkgevers WHERE id = '.$watchlist[$i].' ');
Dit is wat mij betreft de enige echte mogelijkheid. Alleen vindt ik het vreemd dat je nog een extra spatie na de variabele invoegt aangezien dit de gehele query is en er niks achteraan komt.
Misschien is het ook wat verstandiger om eerst wat te oefenen met de php syntax in combinatie met mysql functies via php dan direct met een database layer aan de slag te gaan ?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • aex351
  • Registratie: Juni 2005
  • Laatst online: 11:19

aex351

I am the one

Creepy schreef op zondag 05 maart 2006 @ 09:48:
[...]

Een ID veld is doorgaans een nummeriek veld. Waarom gebruik je quotes in je query om dat veld heen? In de meeste gevallen levert dit een SQL error op.

[...]

Dit is wat mij betreft de enige echte mogelijkheid. Alleen vindt ik het vreemd dat je nog een extra spatie na de variabele invoegt aangezien dit de gehele query is en er niks achteraan komt.

[...]
1: Levert geen error op. 2: ik vind het persoonlijk zo veel overzichtelijker dan alles achter elkaar te plakken. Normaal gesproken zet ik alles onder elkaar (hoeveel nutteloze ruimte daar wel niet tussen zit he B) ) :)

[ Voor 6% gewijzigd door aex351 op 05-03-2006 13:12 ]

< dit stukje webruimte is te huur >


Verwijderd

Topicstarter
Creepy schreef op zondag 05 maart 2006 @ 09:48:
Misschien is het ook wat verstandiger om eerst wat te oefenen met de php syntax in combinatie met mysql functies via php dan direct met een database layer aan de slag te gaan ?
Dat heb ik al vaak genoeg gedaan, deze keer ben ik gedwongen met een Access-database aan de slag te gaan en omdat ik PHP ken gebruik ik deze taal. Vandaar dat ik ook gebruik maak van de ADO-connectie omdat deze relatief eenvoudig is.

  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 07-04 17:22

edeboeck

mie noow noooothing ...

Wat me al veel geholpen heeft:
  1. Query eerst in variabele stoppen
  2. Variabele tonen op scherm (afgebakend door bv blokhaken zodat je heel goed weet waar hij begint en eindigt)
  3. Query uitvoeren in lokale versie van de DB (in Access zelf dus)
  4. Nu krijg je een degelijke foutmelding en kan je hopen het op te lossen ;)

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
aex351 schreef op zondag 05 maart 2006 @ 13:12:
[...]


1: Levert geen error op.
In MySQL misschien niet, veel databases geven wel een error hoor.

Oops! Google Chrome could not find www.rijks%20museum.nl

Pagina: 1