Permalänk
Medlem

connect - mysql

Hej,

Jag har min anslutning till min mysql-databas i en i en funktion som ligger i en fil som heter func.php. För att öppna databasen måste jag först inkludera func.php på sidan och sedan skriva con();.

På nätet funkar detta fin fint! Men nu när jag har sakerna liggande på min egena dator funkar det inte! Jag få följande felmeddelande:

Fatal error: Cannot redeclare con() (previously declared in C:\wwwroot\func.php:7) in C:\wwwroot\func.php on line 5

Det är på det viset att jag har en index-fil där jag har inkluderat tre filer. Vardera av dessa filer har en egen anslutning till databasen genom att jag inkluderat func.php och skrivit con();. Kan det ha något med det att göra? Jag vet heller inte hur man stänger en databas som har öppnats genom en sådan funktion...

Tacksam för hjälp.

Jag har även problem med session_start();
får detta felmeddelande:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at C:\wwwroot\index.php:12) in C:\wwwroot\head.php on line 12

EDIT: En sak till... kan man på något sätt ha två databaskopplingar öppna samtidigt? Alltså inte kopplingar till två olika tabbeller, utan två olika databaser.

Permalänk
Medlem

"Cannot redeclare con()" får du för att du försöker skapa funktionen en andra gång, istället för att använda include() använda include_once() så laddas inte filen in igen om den redan har blivit inkluderad förut och på så vis slipper du det felet.

flera databaser...du förstår säkert, snabbt skrivet...

$dbconn1 = mysql_connect(host, user, pass osv...); $dbconn2 = mysql_connect(host, user, pass osv...); $result1 = mysql_query($query, $dbconn1); $result2 = mysql_query($query, $dbconn2);

Permalänk
Medlem

ok, tack för de svaren!

Du vet inte vad dessa felmeddelandena betyder?

Warning: session_start(): open(/tmp\sess_a0c0229adc1086fc4c2a38bb86be89d1, O_RDWR) failed: No such file or directory (2) in C:\wwwroot\index.php on line 13

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at C:\wwwroot\index.php:12) in C:\wwwroot\index.php on line 13

förmodar att det är för att jag inte ställt in någon #tmpdir#= i mysql... Vad ska man skriva där? alltså, var är bra att ha en sådan mapp?

en till fråga kan jag på Om jag har en fil med en databaskoppling. I den filen inkluderar jag en annan fil... får den inkluderade filen del av databaskopplingen i grundfilen då, eller måste jag göra en ny databaskoppling?

Permalänk
Medlem

Du ska inte ha något behov av att skriva en ny databas koppling.

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av Madoor
ok, tack för de svaren!

Du vet inte vad dessa felmeddelandena betyder?

Warning: session_start(): open(/tmp\sess_a0c0229adc1086fc4c2a38bb86be89d1, O_RDWR) failed: No such file or directory (2) in C:\wwwroot\index.php on line 13

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at C:\wwwroot\index.php:12) in C:\wwwroot\index.php on line 13

förmodar att det är för att jag inte ställt in någon #tmpdir#= i mysql... Vad ska man skriva där? alltså, var är bra att ha en sådan mapp?

Du måste redigera din php.ini och ändra din temp-katalog för sessioner. Sätt den till C:\Windows\Temp eller var du nu vill ha temporära filer.

Permalänk
Medlem

ok, nu fick jag bort ett felmeddelande, men jag har fortfarande dessa kvar:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at C:\wwwroot\index.php:12) in C:\wwwroot\index.php on line 13

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at C:\wwwroot\index.php:12) in C:\wwwroot\index.php on line 13

Line 13: session_start();

Någon som vet vad det är för fel? Jag ställde nu bara in session.save_path = "C:\Windows\Temp" i php.ini

En annan fråga jag undrar över. På nätet kan jag inte köra php-sidorna på samma sätt som på min egen server... När jag har en fil, i den inkluderar jag func.php (filen innehåller databaskopplingen) och även x.php (filen skriver ut info från en databastabell...), så får jag upp felmeddelande "Warning: mysql_query(): Access denied for user: 'www-data@localhost' (Using password: NO) in func/x.php on line 17" vilket jag förmodar betyder att filen inte tagit del av databaskopplingen! Kan man ändra detta? Om det inte går att ändra på webbhotellet, kan jag ändra det på min egen server så att php-sidorna behandlas på samma sätt på webbhotellet som min server?

På nätet får jag heller inget felmeddelande då jag inkluderar func.php i x.php. På min server står det då att jag inte kan definiera funktionerna på varandra då jag gör detta!

Permalänk
Medlem

Du får inte parsa ut något till klienten innan headers är sända.

EDIT: Rörande sista delen, har du fått inloggning och så vidare till databasen av webbhotellet?

Visa signatur

Old math teachers never die, they just tend to infinity.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Bark
Du får inte parsa ut något till klienten innan headers är sända.

När sänds de då? Jag testade att lägga session_start, under min header-tag, men det verkade inte funka heller. Samma felmeddelande.

Edit: ja, ja kan redigera databasen..

Permalänk
Medlem

session_*() är en header, och måste således skickas/köras först innan du spottar ut någon data. Du får med andra ord inte skriva ut till exempel någon html till klienten innan detta är gjort.

Stämmer login/lösenord i skripten till motsvarande databas på webbhotellet då?

Visa signatur

Old math teachers never die, they just tend to infinity.

Permalänk
Medlem

ja, jag kommer in, men det verkar som om de inkluderade sidorna skrivs i html innan de läggs in i grundfilen...

Permalänk
Medlem

Har du rättigheter till att köra SELECT/INSERT/UPDATE/DELETE etc på webbhotellet då? :E

Visa signatur

Old math teachers never die, they just tend to infinity.

Permalänk
Medlem

Nu funkar det... Laddade upp func.php igen, så ville det funka. Hade tydligen glömt att ladda upp den nyaste versionen eller nått. Tack för hjkälpen!

Men då har jag en ny fråga! Just nu på webbhotellet inkluderar jag functions i både index.php och i x.php (x.php är inkluderad i index.php...). Varför får jag då inte upp ett felmeddelande om att den filen redan är inkluderad?