|
| Ændre db-forbindelse, når filen lægges i e~ Fra : Jakob |
Dato : 01-11-05 11:05 |
|
Jeg er nybegynder i php og har lavet noget kode, trækker data ud arf
en tabel. Det virker udmærket, når min fil ("hentdata.php") ligger i
roden af localhost. Men nu har jeg så lagt filen ind i en mappe under
localhost, og den mappe hedder "web", og så virker forbindelsen til
MySql ikke mere. Den gamle kode ser sådan ud:
<?php
$linkDB = mysql_connect("localhost","root","");
mysql_select_db("jmtestdb",$linkDB);
$hentdata = mysql_query("Select * from kunder",$linkDB);
while($hej = mysql_fetch_assoc($hentdata)){
echo "Navn: ".$hej["fornavn"]."<br>";
echo "Efternavn: ".$hej["efternavn"]."<br>";
}
?>
Hvad skal jeg ændre, for at forbindelsen virker, når koden ligger i
en mappe kaldet "web"?
v.h.
Jakob
(php-nybegynder)
| |
Jesper H (01-11-2005)
| Kommentar Fra : Jesper H |
Dato : 01-11-05 15:08 |
|
Hej
Øhh, den gamle kode burde ikke ændre sig, selvom du lægger koden i
en ny mappe, så længe det er en mappe der er under webserveren. Er
det fordi du ændrer linien:
$linkDB = mysql_connect("localhost","root","");
til
$linkDB = mysql_connect("localhost/web","root","");
???
For dette vil ikke være rigtigt. "localhost" skal stadig bare være
"localhost", da dette er net-adressen til den server, hvorpå
mySQL-databasen ligger. Det navn, der står i mysql_connect()
kommandoen har ikke noget med din mappe "localhost" at gøre, men
net-navnet "localhost" som altid henviser til din egen computer.
Mvh
Jesper
| |
Jakob Munck (01-11-2005)
| Kommentar Fra : Jakob Munck |
Dato : 01-11-05 15:40 |
|
Tak for det. Jeg troede at man skulle ændre adressen, det skal man ikke. Til
gengæld forstår jeg ikke, hvordan den samme henvisning til databasen kan
bruges,. uanset hvor filen ligger (indenfor localhost). Det synes jeg er
mærkeligt...?
v.h.
Jakob
| |
Jesper H (01-11-2005)
| Kommentar Fra : Jesper H |
Dato : 01-11-05 16:49 |
|
Det er fordi din webserver og din mySQL-server er (groft sagt) to
forskellige programmer/processer på din computer.
Det svarer lidt til, hvis du skal ringe til et telefonnummer - dette
telefonnummer vil ikke ændre sig, selvom du selv får ny telefon eller
skifter nummer
Mvh
Jesper
| |
Jakob Munck (01-11-2005)
| Kommentar Fra : Jakob Munck |
Dato : 01-11-05 18:58 |
|
>Det svarer lidt til, hvis du skal ringe til et telefonnummer - dette
>telefonnummer vil ikke ændre sig, selvom du selv får ny telefon eller
>skifter nummer
Jeg forstår det stadig ikke. Når man arbejder med asp (hvor jeg kommer fra),
så skal det altid angives i koden hvor man connecter præcis, hvor databasen
ligger, ellers kan man ikke kontakte den. Her i php er det åbenbart ikke
nødvendigt at skrive i koden, hvor databasen befinder sig. Men hvordan
finder koden så ud af det, for den kan skal jo vide det helt præcis, når den
skal hente og gemme i denne database??
v.h.
Jakob
| |
Jacob Atzen (01-11-2005)
| Kommentar Fra : Jacob Atzen |
Dato : 01-11-05 19:51 |
|
On 2005-11-01, Jakob Munck <jm2_fjern_dette@webspeed.dk> wrote:
> Jeg forstår det stadig ikke. Når man arbejder med asp (hvor jeg kommer
> fra), så skal det altid angives i koden hvor man connecter præcis,
> hvor databasen ligger, ellers kan man ikke kontakte den. Her i php er
> det åbenbart ikke nødvendigt at skrive i koden, hvor databasen
> befinder sig. Men hvordan finder koden så ud af det, for den kan skal
> jo vide det helt præcis, når den skal hente og gemme i denne
> database??
Jeg går ud fra du tidligere har arbejdet med en database, der lå i en
fil (f.eks. en Access DB).
MySQL serveren er et selvstændigt program, som din PHP applikation
kommunikerer med, typisk gennem netværket[1]. Dvs. at din databasedriver
i PHP ikke åbner en fil, men en netværksforbindelse til din
databaseserver. Det er således hostnavnet på din databaseserver
("localhost") du angiver, når du forbinder til en MySQL database og ikke
en sti til en fil.
Det er således en præcis angivelse af, hvor din database ligger. Hvis
den lå på en anden maskine skulle du angive eksempelvis
"mysqlserver.example.com" istedet for localhost.
Du kan godt bruge Access databaser fra PHP, eller SQLite database, som
ligeledes ligger i en fil. MySQL er bare det, som er mest udbredt.
[1]: Der er også andre måder at snakke med MySQL på, men de er ikke så
interessante så længe du bare lærer om PHP og MySQL.
--
Med venlig hilsen
- Jacob Atzen
| |
Knud Winckelmann (01-11-2005)
| Kommentar Fra : Knud Winckelmann |
Dato : 01-11-05 20:15 |
|
Således skrev Jakob Munck den Tue, 1 Nov 2005 18:58:05 +0100:
>Når man arbejder med asp (hvor jeg kommer fra),
>så skal det altid angives i koden hvor man connecter præcis, hvor databasen
>ligger, ellers kan man ikke kontakte den.
Bruger du Access som backend? Der skal den præcise sti angives.
Bruger du f.eks en MS SQL-server, angiver du også kun servernavn og
database.
> Her i php er det åbenbart ikke
>nødvendigt at skrive i koden, hvor databasen befinder sig.
>Men hvordan
>finder koden så ud af det, for den kan skal jo vide det helt præcis, når den
>skal hente og gemme i denne database??
Den "ligger" ikke et bestemt sted, du forbinder dig som sagt til
serveren, som lytter på en port efter forbindelser og fortæller hviken
database du vil bruge.
Så klarer database-serveren resten.
Knud
--
If there is no God, who pops up the next Kleenex?
-- Art Hoppe
| |
Jakob Munck (01-11-2005)
| Kommentar Fra : Jakob Munck |
Dato : 01-11-05 21:00 |
|
tak til jer alle for svarene. Jeg er blevet klogere.
v.h.
Jakob
| |
|
|