/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
SQL problem...
Fra : Steen Broelling


Dato : 11-03-02 11:01

Hej...

Er der nogen som kan se nogen åbenlyse fejl i nedenstående kode!?? Jeg
får en mySQL: "Supplied argument is not a valid MySQL-Link resource",
hvilket jeg ikke helt forstår meningen med...

--
if ($searchme) {

$sql = "SELECT DATE_FORMAT(dato, '%d-%m-%Y') AS datoen, initialer,
antal, loknavn FROM FUGLEDATA a, TURDATA b, ARTDATA c, LOKALITETER d,
ARTSGRUPPE e, OBSERDATA f";
$sql = "WHERE a.turid = b.turid AND a.artnr = c.artnr AND b.loknr =
d.loknr AND b.obserid = f.id ";

if ($art) {
$sql = "AND c.artnavn LIKE '%$art%' ";
}

if ($betweendato) {
$first_dato = "$year-$month-$day";
$second_dato = "$year1-$month1-$day1";
$sql = "AND b.dato BETWEEN '$first_dato' AND '$second_dato' ";
}
if ($yeardato) {
$sql = "AND b.dato LIKE '$thisyear-%$m%-%$d%' ";
}

if ($lokdata) {
$sql = "AND d.loknr = '%$loknavn%' ";
}

if ($status) {
$sql = "AND c.status = '$statusnummer' ";
}

if ($gruppedata) {
$sql = "AND e.gruppeid = '$gruppenummer' AND c.artnr BETWEEN
'$euring1' AND '$euring2' ";
}

if ($obserdata) {
$sql = "AND f.id = '%$observer%' ";
}

$sql = "ORDER BY b.dato DESC";

$result = mysql_query($sql,$db);
$nrows = @mysql_num_rows($result);

if ($nrows>0) {
while ($row = mysql_fetch_array($result)) {
$datoen = $row['datoen'];
$init = $row['initialer'];
$antal = $row['antal'];
$loknavn = $row['loknavn'];

echo "$datoen $loknavn $antal $init<br>";
}
}
--
Jeg har en fornemmelse af, at det drejer sig om $sql kommandoen -
variablerne og feltnavnene skulle helt sikkert være ok.

MVH Steen Brølling
http://www.broelling.dk
"Pete sets the pace to anything..."

 
 
Jonas Koch Bentzen (11-03-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 11-03-02 11:31

Steen Broelling skrev:
>
> Er der nogen som kan se nogen åbenlyse fejl i nedenstående kode!?? Jeg
> får en mySQL: "Supplied argument is not a valid MySQL-Link resource",
> hvilket jeg ikke helt forstår meningen med...

Skriv "or trigger_error(mysql_error(), E_USER_WARNING);" efter din
mysql_query - så finder du ud af, hvad fejlen er.

> $sql = "SELECT DATE_FORMAT(dato, '%d-%m-%Y') AS datoen, initialer,
> antal, loknavn FROM FUGLEDATA a, TURDATA b, ARTDATA c, LOKALITETER d,
> ARTSGRUPPE e, OBSERDATA f";

SQL-kommandoer bør normalt skrives med stort, mens tabel- og
kolonnenavne bør skrives med småt. Derfor skal f.eks. "fugledata" nok
skrives med småt. Det der med "a", "b" osv... Forsøger du at lave
aliaser til tabelnavnene? I så fald skal du bruge AS:

SELECT t1.fuglenavn FROM fugle AS t1

--
Jonas Koch Bentzen

http://understroem.dk/

Mads Lie Jensen (11-03-2002)
Kommentar
Fra : Mads Lie Jensen


Dato : 11-03-02 11:46

On Mon, 11 Mar 2002 11:30:49 +0100, Jonas Koch Bentzen
<ingen.emailadresse@eksempel.dk> wrote:

>SQL-kommandoer bør normalt skrives med stort, mens tabel- og
>kolonnenavne bør skrives med småt. Derfor skal f.eks. "fugledata" nok
>skrives med småt. Det der med "a", "b" osv... Forsøger du at lave
>aliaser til tabelnavnene? I så fald skal du bruge AS:
>
>SELECT t1.fuglenavn FROM fugle AS t1

Enig. Men man skal bare huske at på linux (sikkert unix generelt) er der
forskel på store og små bogstaver i tabelnavne. Så hvis tabellen
vitterligt hedder 'FUGLENAVN' så fejler skidtet hvis man bruger
'fuglenavn'.

--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk

Directory Opus - nu også til windows - http://www.gpsoft.com.au

Jonas Koch Bentzen (11-03-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 11-03-02 12:10

Mads Lie Jensen skrev:

>>SELECT t1.fuglenavn FROM fugle AS t1
>
> Enig. Men man skal bare huske at på linux (sikkert unix generelt) er
> der forskel på store og små bogstaver i tabelnavne.

Også på Unix generelt, ja.

> Så hvis tabellen
> vitterligt hedder 'FUGLENAVN' så fejler skidtet hvis man bruger
> 'fuglenavn'.

Jeps.

--
Jonas Koch Bentzen

http://understroem.dk/

Steen Broelling (11-03-2002)
Kommentar
Fra : Steen Broelling


Dato : 11-03-02 12:18

On Mon, 11 Mar 2002 12:10:28 +0100, Jonas Koch Bentzen
<ingen.emailadresse@eksempel.dk> wrote:

>> Så hvis tabellen
>> vitterligt hedder 'FUGLENAVN' så fejler skidtet hvis man bruger
>> 'fuglenavn'.
>
>Jeps.

Og det gør den nemlig :)

Nå - det er lykkedes mig at komme fejlene til livs, men jeg får intet
output, selvom selvsamme SQL gir' et resultat (2 records) i
phpMyAdmin.

Spørgsmålet er selvfølgelig om der overhovedet blir' skudt en SQL af i
scriptet!??

Visning af data:

$result = @mysql_query($sql,$db);

while ($row = @mysql_fetch_array($result)) {
$datoen = $row['datoen'];
$init = $row['initialer'];
$antal = $row['antal'];
$loknavn = $row['loknavn'];

echo "$datoen $loknavn $antal $init<br>";
}

Steen Brølling
http://www.broelling.dk
"Pete sets the pace to anything..."

Jonas Koch Bentzen (11-03-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 11-03-02 12:25

Steen Broelling skrev:
>
> $result = @mysql_query($sql,$db);

Hvorfor har du sat snabel-a foran mysql_query? Det er da dumt, når du
vil fejlsøge. Og hvorfor har du ikke sat trigger_error på?

--
Jonas Koch Bentzen

http://understroem.dk/

Steen Broelling (11-03-2002)
Kommentar
Fra : Steen Broelling


Dato : 11-03-02 12:30

On Mon, 11 Mar 2002 12:24:42 +0100, Jonas Koch Bentzen
<ingen.emailadresse@eksempel.dk> wrote:

>> $result = @mysql_query($sql,$db);
>
>Hvorfor har du sat snabel-a foran mysql_query? Det er da dumt, når du
>vil fejlsøge. Og hvorfor har du ikke sat trigger_error på?

@et er fordi jeg får den føromtalte Ressouce-Link fejl, hvis det ikke
er der.

Årsagen til det andet, var såmænd blot fordi jeg ikke har fejl i min
SELECT statement, så vidt jeg kan se - men jeg prøver med den nu :)

Steen Brølling
http://www.broelling.dk
"Pete sets the pace to anything..."

Peter Brodersen (11-03-2002)
Kommentar
Fra : Peter Brodersen


Dato : 11-03-02 13:39

On Mon, 11 Mar 2002 11:00:57 +0100, Steen Broelling <strix@mail.dk>
wrote:

>Er der nogen som kan se nogen åbenlyse fejl i nedenstående kode!?? Jeg
>får en mySQL: "Supplied argument is not a valid MySQL-Link resource",
>hvilket jeg ikke helt forstår meningen med...

Du får den fejl, fordi:

1. Du fyrer en query af, der ikke går godt
2. UDEN VIDERE forsøger du at bruge resultatet fra din mysql_query,
uden så meget at tjekke om den overhovedet gik godt!

>$result = mysql_query($sql,$db);
>$nrows = @mysql_num_rows($result);

Her går det galt. Du tjekker ikke om $result overhovedet kan bruges
til noget, før du rask bruger den i næste linje.

Tjek returværdien først, fx:

$result = mysql_query($sql,$db);
if (!$result) die("Jeg har lavet en fejl!<br>Min query:
$sql<br>Fejlen: ".mysql_error() );
$nrows = @mysql_num_rows($result);

--
- Peter Brodersen

Jakob Møbjerg Nielse~ (11-03-2002)
Kommentar
Fra : Jakob Møbjerg Nielse~


Dato : 11-03-02 13:54

> if ($searchme) {
>
> $sql = "SELECT DATE_FORMAT(dato, '%d-%m-%Y') AS datoen, initialer,
> antal, loknavn FROM FUGLEDATA a, TURDATA b, ARTDATA c, LOKALITETER d,
> ARTSGRUPPE e, OBSERDATA f";
> $sql = "WHERE a.turid = b.turid AND a.artnr = c.artnr AND b.loknr =
> d.loknr AND b.obserid = f.id ";

Her går det galt... du overskriver $sql i stedet for at konkatenere.

--
Jakob Møbjerg Nielsen
jakob@dataloger.dk
"Hey! He reminds me of someone who looks just like him. - Me"



Steen Broelling (11-03-2002)
Kommentar
Fra : Steen Broelling


Dato : 11-03-02 14:03

On Mon, 11 Mar 2002 13:53:36 +0100, "Jakob Møbjerg Nielsen"
<vitz@cs.auc.dk> wrote:

>> $sql = "SELECT DATE_FORMAT(dato, '%d-%m-%Y') AS datoen, initialer,
>> antal, loknavn FROM FUGLEDATA a, TURDATA b, ARTDATA c, LOKALITETER d,
>> ARTSGRUPPE e, OBSERDATA f";
>> $sql = "WHERE a.turid = b.turid AND a.artnr = c.artnr AND b.loknr =
>> d.loknr AND b.obserid = f.id ";
>
>Her går det galt... du overskriver $sql i stedet for at konkatenere.

Øhh - altså noget med CONCAT at gøre!??? Jeg troede CONCAT($var,$var1)
var til at "lægge ting sammen med"....

Correct me if I'm wrong

Steen Brølling
http://www.broelling.dk
"Pete sets the pace to anything..."

Jakob Møbjerg Nielse~ (11-03-2002)
Kommentar
Fra : Jakob Møbjerg Nielse~


Dato : 11-03-02 14:14

> Øhh - altså noget med CONCAT at gøre!??? Jeg troede
> CONCAT($var,$var1) var til at "lægge ting sammen med"....

Du skal bare skrive:

$sql = "SELECT DATE_FORMAT(dato, '%d-%m-%Y') AS datoen, initialer,
antal, loknavn FROM FUGLEDATA a, TURDATA b, ARTDATA c, LOKALITETER d,
ARTSGRUPPE e, OBSERDATA f";
$sql = $sql." WHERE a.turid = b.turid AND a.artnr = c.artnr AND b.loknr
=
d.loknr AND b.obserid = f.id ";

Og så fremdeles hele vejen gennem koden.

Og da det er et php problem:

FUT: dk.edb.internet.webdesign.serverside.php

--
Jakob Møbjerg Nielsen
jakob@dataloger.dk
"Hey! He reminds me of someone who looks just like him. - Me"



Steen Broelling (11-03-2002)
Kommentar
Fra : Steen Broelling


Dato : 11-03-02 14:13

On Mon, 11 Mar 2002 14:03:18 +0100, Steen Broelling <strix@mail.dk>
wrote:

>Øhh - altså noget med CONCAT at gøre!??? Jeg troede CONCAT($var,$var1)
>var til at "lægge ting sammen med"....

Hmm; jeg begynder at fatte lidt mere. Jeg har nu ændret til $sql .=
"blah.." - hvorefter hele querien fyres af - tak!

Nu skal jeg bare lige ha' tjekket, hvorfor der ikke er noget output :)

Steen Brølling
http://www.broelling.dk
"Pete sets the pace to anything..."

Jakob Møbjerg Nielse~ (11-03-2002)
Kommentar
Fra : Jakob Møbjerg Nielse~


Dato : 11-03-02 16:11

> Hmm; jeg begynder at fatte lidt mere. Jeg har nu ændret til
> $sql .= "blah.."

Du har vel forhåbenligt skrevet $sql .= " blah...". Mellemrummet er
meget vigtigt. Og igen... denne gruppe er ikke en PHP gruppe:

FUT: dk.edb.internet.webdesign.serverside.php

--
Jakob Møbjerg Nielsen
jakob@dataloger.dk
"Hey! He reminds me of someone who looks just like him. - Me"



Jan Eliasen (11-03-2002)
Kommentar
Fra : Jan Eliasen


Dato : 11-03-02 15:49



Steen Broelling (11-03-2002)
Kommentar
Fra : Steen Broelling


Dato : 11-03-02 16:32

On Mon, 11 Mar 2002 11:00:57 +0100, Steen Broelling <strix@mail.dk>
wrote:

Tak allesammen for jeres hjælp!

MVH Steen Brølling
http://www.broelling.dk
"Pete sets the pace to anything..."

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408927
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste