Avatar billede pluth Nybegynder
17. august 2010 - 21:00 Der er 21 kommentarer og
1 løsning

PHP datepart fejl

Hej,

Jeg bruger PHP samt MSSQL. Når jeg i min SQL skriver

datepart(ww, t2.create) as week, virker det som det skal i min MSSQL manager, men når jeg indsætter det i min PHP kode giver det fejl.

Nogen som har et bud på hvor PHP kan ikke fortolke det korrekt ?
Avatar billede arne_v Ekspert
17. august 2010 - 21:12 #1
Hvordan ser PHP koden ud?

Hvilken fejl faar du?
Avatar billede pluth Nybegynder
17. august 2010 - 21:23 #2
Min kode er

select count(*) as total, datepart(ww,t2.create) as week
from t1 t1
inner join t2 t2 on t2.id = t1.id
group by datepart(ww,t2.create)

Fejlen som kommer er noget underligt noget og den som næsten kommer hver gang der er en fejl, men har intet med fejlen at gøre - Er min vurdering..

Warning: sqlsrv_fetch_array() expects parameter 1 to be resource, boolean given in

Hvis jeg retter til

select count(*) as total, datepart(yy,t2.create) as week
from t1 t1
inner join t2 t2 on t2.id = t1.id
group by datepart(yy,t2.create) virker det, men lige meget hvad jeg skriver andet en yy.t2.create kommer den fejl.
Avatar billede arne_v Ekspert
17. august 2010 - 21:26 #3
Det der er kun SQL - jeg vil gerne se PHP koden som kalder den SQL.
Avatar billede pluth Nybegynder
17. august 2010 - 21:38 #4
Det kommer her :)

$result = sqlsrv_query($conn, "select count(*) as total, datepart(ww,t2.create) as week from t1 t1
inner join t2 t2 on t2.id = t1.id
group by datepart(ww,t2.create)");

$total = sqlsrv_fetch_array($result) or die(print_r(sqlsrv_errors()));

$total = $total["total"];
Avatar billede arne_v Ekspert
17. august 2010 - 21:43 #5
sqlsrv_query er ikke en kendt PHP funkion.

Hvis du mener mssql_query, saa er argumenterne omvendt:

sqlsrv_query(sql,connection)
Avatar billede arne_v Ekspert
17. august 2010 - 21:43 #6
mssql_query(sql,connection)
Avatar billede pluth Nybegynder
17. august 2010 - 21:47 #7
Jeg bruger PHP på IIS server, og det skulle være det nye istedet for mssql_query. (Jeg har også tidligere brugt dette, men læste mig frem til på nettet, at man nu skulle bruge SQLSRV istedet.)
Det har så givet mig nogle udfordringer med min normale PHP kode.
Avatar billede arne_v Ekspert
17. august 2010 - 21:53 #8
Jeg googlede - det er Microsofts extension til PHP.
Avatar billede arne_v Ekspert
17. august 2010 - 21:53 #9
proev og saet or die paa sqlsrv_query og se hvilken fejl du faar!
Avatar billede pluth Nybegynder
17. august 2010 - 21:58 #10
Der kommer denne fejl igen "Warning: sqlsrv_fetch_array() expects parameter 1 to be resource, boolean given in"

Jeg prøver at arbejde videre på det imorgen. Er nød til at smutte nu.

Tak for din indsats.
Avatar billede arne_v Ekspert
17. august 2010 - 22:04 #11
Hm.

Det burde ikke kunne lade sig goere.

$result = sqlsrv_query($conn, "select count(*) as total, datepart(ww,t2.create) as week from t1 t1
inner join t2 t2 on t2.id = t1.id
group by datepart(ww,t2.create)")or die(print_r(sqlsrv_errors()));

$total = sqlsrv_fetch_array($result) or die(print_r(sqlsrv_errors()));

$result vil enten returnere data (og saa faar du ikke den fejl) eller false (og saa skal die kaldes med en bedre fejl besked).
Avatar billede pluth Nybegynder
18. august 2010 - 14:58 #12
Ja, det er meget underligt.

Jeg har rettet til

$result = sqlsrv_query($conn, "select count(*) as total, datepart(ww,t2.create) as week from t1 t1
inner join t2 t2 on t2.id = t1.id
group by datepart(ww,t2.create)")or die(print_r(sqlsrv_errors()));

while($row=sqlsrv_fetch_array($result)) {

Og det ser ud til at virke, dog skal jeg have samlet alle count i en streng og alle week i en anden.
Avatar billede pluth Nybegynder
19. august 2010 - 12:36 #13
Hej igen,

Kan du evt. hjælpe mig med hvad årsagen til at nedenstående altid kun giver et resultat, i stedet for at liste alle week resultater i en liste ??

    while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) {

$params = array($row['week']);

    }
Avatar billede arne_v Ekspert
19. august 2010 - 15:32 #14
$params = array($row['week']);

->

$params[] = array($row['week']);

?
Avatar billede pluth Nybegynder
19. august 2010 - 16:46 #15
Lige meget hvad jeg gør, udskriver den kun "array" når jeg tilføjer [] efter params
Avatar billede arne_v Ekspert
19. august 2010 - 17:00 #16
Hvad med:

print_r($params);

?
Avatar billede pluth Nybegynder
19. august 2010 - 17:13 #17
Så kommer der Array ( [0] => Array ( [0] => 33 ) [1] => Array ( [0] => 34 ) ) og det korrekte er 33 og 34
Avatar billede arne_v Ekspert
19. august 2010 - 17:34 #18
saa maa $params[0][0] og $params[1][0] vel give dig det korrekte?
Avatar billede pluth Nybegynder
19. august 2010 - 17:42 #19
Ja, det gør de nu :) Hvis nu jeg gerne vil have dem begge sat i den samme streng, har du så en idé til hvordan jeg kan gøre det ?

Så $params = 3334 - fordi print_r ($params[0][0]); = 33 og print_r ($params[1][0]); = 34
Avatar billede arne_v Ekspert
19. august 2010 - 18:45 #20
$s = $params[0][0] . $params[1][0];

vil jeg tro
Avatar billede pluth Nybegynder
19. august 2010 - 19:09 #21
Så var den det, Tak :) - Smid et svar så jeg kan give dig dine point.
Avatar billede arne_v Ekspert
19. august 2010 - 19:11 #22
svar
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
Kategori
Kurser inden for grundlæggende programmering

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