Avatar billede cyanide Nybegynder
30. maj 2002 - 08:29 Der er 27 kommentarer

Hvorfor er der kun 1 svar i forespørgselen?

Hvorfor giver følgende kode kun 1 resultat, når der er mange flere. Dvs. den finder kun første resultat i forespørgselen og stopper så. Når jeg bruger "LIKE" istedet for "WHERE" finder den alle resultater, men dette langsommeliggør min forespørgsel

$connexion = odbc_connect($base, $login, $password );

$query="SELECT * FROM DB WHERE Number='1613' ORDER BY Date DESC";

$result = odbc_exec ($connexion,$query);

while(odbc_fetch_row($result)){
    print odbc_result($result, 2);
}
Avatar billede cyanide Nybegynder
30. maj 2002 - 08:32 #1
sorry, når jeg bruger "WHERE Number LIKE '1613"
Avatar billede Slettet bruger
30. maj 2002 - 08:38 #2
while(odbc_fetch_row($result)){

skal være

while(odbc_fetch_array($result)){
Avatar billede erikjacobsen Ekspert
30. maj 2002 - 08:49 #3
"...WHERE Number LIKE '%1613%'"

??
Avatar billede cyanide Nybegynder
30. maj 2002 - 09:02 #4
Fatal error: Call to undefined function: odbc_fetch_array() in \wwwroot\xxx.php on line 22

Kører php-4.2.0-Win32 - Har jeg brug for en anden version af PHP?
Avatar billede cyanide Nybegynder
30. maj 2002 - 09:02 #5
Jeg kan som sagt ikke bruge "LIKE", da den langsommeliggør forespørgselen!
Avatar billede erikjacobsen Ekspert
30. maj 2002 - 09:05 #6
Ok, jeg læste kun din kommentar ikke dit spørgsmål. Men hvad vil du. Den finder alle der
er præcis '1613' - og der er kun én, Hvilke andre skal du have?
Avatar billede cyanide Nybegynder
30. maj 2002 - 09:11 #7
Den skal finde alle resultater der har Number='1613' - det virker fint med brugen af LIKE, men såfremt man bruger = da finder den kun første resultat i databasen selvom der er xx steder hvor Number='1613'! Og jeg skal have det til at virke med = da LIKE ikke bruger indexeringen, og derfor langsommeliggør forespørgselen!
Avatar billede Slettet bruger
30. maj 2002 - 09:23 #8
hehe...jeg er lige stået op!

Hvilken DB bruger du?
Avatar billede cyanide Nybegynder
30. maj 2002 - 09:29 #9
Jeg connecter til en Paradox database - og jeg er desværre nødt til at bruge den, da det system den skal forespørge i bruger denne DB - ellers ville jeg have foretrukket mySQL
Avatar billede erikjacobsen Ekspert
30. maj 2002 - 09:30 #10
Jamen så er der da kun én der er *præcis* lig med '1613' .... ellers er der noget jeg har
misforstået eller du ikke siger...:)
Avatar billede cyanide Nybegynder
30. maj 2002 - 09:37 #11
:) Nej, der er mange poster der er lig præcis 1613 - 1613 udgør et ID nr, og hvad har dette ID nummer udført på fx. en Dato
Ved brugen af WHERE Number='1613' fås 1 resultat (første post)
Ved brugen af WHERE Number LIKE '1613' fås fx. 25 poster (langsom)
Avatar billede erikjacobsen Ekspert
30. maj 2002 - 09:42 #12
det giver absolut ingen mening. Kan du afprøve dine SQL-sætninger andetsteds end i PHP,
så vi kan se om det er PHP der er problemet, eller om det er paradox
Avatar billede cyanide Nybegynder
30. maj 2002 - 09:44 #13
tja, jeg skal se om jeg kan få det testet andet sted! - Men det undrer mig at php kalder odbc_fetch_array for en udefineret funktion ??
Avatar billede erikjacobsen Ekspert
30. maj 2002 - 09:49 #14
du har bare stavet forkert
Avatar billede erikjacobsen Ekspert
30. maj 2002 - 09:51 #15
...og så er der et par versioner af PHP hvor den ikke er.
Avatar billede cyanide Nybegynder
30. maj 2002 - 09:54 #16
nah, det med stavningen tror jeg ikke - har copy/pasted fra manualen ;) - men jeg har lige prøvet PHP 4.2.1 - hvor den melder samme fejl
Avatar billede erikjacobsen Ekspert
30. maj 2002 - 09:59 #17
Ja, de versioner hvor den ikke er sådan set kun fra versoin 1 til version 4.2.1 - men den kommer nok.
Det andet skal nu også virke
Avatar billede cyanide Nybegynder
30. maj 2002 - 10:06 #18
Det må næsten være PHP - følgende ASP kode virker perfekt

<%
dim oRSp
dim oConn
set oConn = Server.CreateObject("ADODB.Connection")
set oRSp = Server.CreateObject("ADODB.Recordset")

oConn.open "DSN=xxxxxx"
oRSp.open "SELECT * FROM DB WHERE Number='1613' ORDER BY Date DESC", oConn
oRSp.MoveFirst

do While NOT oRSp.EOF
        response.write oRSp("Number") & "<br>" & oRSp("Date") & "<br>"
        oRSp.MoveNext
Loop

oRSp.close
set oRSp = Nothing
%>
Avatar billede tipsen Nybegynder
30. maj 2002 - 11:16 #19
Hvad sker der hvis du prøver:

echo odbc_num_rows($result);

Erik: Hvordan finder du ud af hvilke php-versioner der understøtter en given funktion?
Avatar billede cyanide Nybegynder
30. maj 2002 - 13:33 #20
Den returnerer -1 - Men det står der også i PHP manualen at den gør ved de fleste ODBC drivere

Kører jeg den uden "ORDER BY Date DESC" finder den 3 resultater. Men stadigvæk mangler der en hel del af resultaterne! Nogen forklaring på dette?
Avatar billede erikjacobsen Ekspert
30. maj 2002 - 13:52 #21
Ingen forklaring. Det er endda mere mystisk end hvorfor strudsen ser tåbelig ud og
vi altid skal have en statsminister der hedder Rasmussen. Men måske du kunne overveje
at finde en nyere ODBC driver til Paradox ... ?
Avatar billede jakoba Nybegynder
30. maj 2002 - 14:24 #22
er feltet Number defineret som et char eller varchar felt?
Hvis det er en slags int bør du fjerne de der '-tegn omkring tallet. (Det er ikke alle sql-fortolkere der er så tolerante som mysql).

mvh JakobA
Avatar billede cyanide Nybegynder
30. maj 2002 - 16:28 #23
feltet er defineret som char
Jeg må prøve at se om det skulle lykkes med en anden ODBC driver - det tvivler jeg bare på når forespørgslen virker i ASP med samme ODBC driver
Avatar billede cyanide Nybegynder
30. maj 2002 - 18:35 #24
Nåh, men hvis der stadig er nogle der følger med i denne her, så har jeg fundet ud af at problemet enten ligger i Windows XP eller min  Apache 2.0.35 - Jeg har lige installeret PHP 4.2.1 som php4isapi.dll på en Windows 2000 Prof med IIS 5 - Den finder fint alle resultater!
Avatar billede erikjacobsen Ekspert
30. maj 2002 - 18:55 #25
Vi følger med... Jeg tror vi skal have det sådan på eksperten, at alle spørgemål,
uden undtagelse, helt automatisk bliver besvaret af eksperten med beskeden "Opgrader".
Det virker i hvert fald af og til...
Avatar billede cyanide Nybegynder
30. maj 2002 - 19:12 #26
eller måske snarere "nedgrader" ;)
Avatar billede erikjacobsen Ekspert
30. maj 2002 - 20:23 #27
Nå ja, IIS 5 må være en nedgradering ...

Men det er nu mærkeligt alligevel, for webserveren, af alle, har vel intet
med forbindelsen fra PHP til databasen at gøre?
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

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