|
| 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..."
| |
|
|