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

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Unable to select database
Fra : Ciffor


Dato : 12-12-06 20:49

Aften.

Når jeg forsøger at skabe kontakt til min mysql db i et .php, modtager jeg
følgende besked " Unable to select database".

Har googlet men ikke fundet noget brugbart svar.

Jeg kan regne ud at det formentlig ikke har noget at gøre med password,
username og at db virkelig eksisterer.

Men hvorfor fejler funktionen?

Herunder er min kode:

------------------------

<?php

$username="root";
$password="password";
$database="kontakter";

$conn = mysql_connect('localhost',$username,$password);

mysql_select_db($database,$conn) or die("Unable to select database");

mysql_query($query);

$query = "INSERT INTO kontakter VALUES ('','John','M.I','01234
567890','00112 334455','01234
567891',johnmi@gowansnet.com','http://www.www.com')";

mysql_close();

?>



 
 
Ciffor (12-12-2006)
Kommentar
Fra : Ciffor


Dato : 12-12-06 20:56

Ciffor wrote:
>
> Når jeg forsøger at skabe kontakt til min mysql db i et .php,
> modtager jeg følgende besked " Unable to select database".

Nu er jeg helt ny i det her php, men hvis jeg ikke er helt forkert på den,
mangler der en sti til databasens beliggenhed i koden, er det ikke rigtigt?

---------------------

<?php

$username="root";
$password="password";
$database="kontakter";

$conn = mysql_connect('localhost',$username,$password);

mysql_select_db($database,$conn) or die("Unable to select database");

mysql_query($query);

$query = "INSERT INTO kontakter VALUES ('','John','M.I','01234
567890','00112 334455','01234
567891',johnmi@gowansnet.com','<A
HREF="http://www.www.com">http://www.www.com')";

mysql_close();

?>



Erlend Klakegg Bergh~ (12-12-2006)
Kommentar
Fra : Erlend Klakegg Bergh~


Dato : 12-12-06 21:24

Ciffor skrev:
> Aften.
>
> Når jeg forsøger at skabe kontakt til min mysql db i et .php, modtager jeg
> følgende besked " Unable to select database".
>
> Har googlet men ikke fundet noget brugbart svar.
>
> Jeg kan regne ud at det formentlig ikke har noget at gøre med password,
> username og at db virkelig eksisterer.
>
> Men hvorfor fejler funktionen?
>
> Herunder er min kode:
>
> ------------------------
>
> <?php
>
> $username="root";
> $password="password";
> $database="kontakter";
>
> $conn = mysql_connect('localhost',$username,$password);
>
> mysql_select_db($database,$conn) or die("Unable to select database");
>
> mysql_query($query);
>
> $query = "INSERT INTO kontakter VALUES ('','John','M.I','01234
> 567890','00112 334455','01234
> 567891',johnmi@gowansnet.com','http://www.www.com')";
>
> mysql_close();
>
> ?>

Hva med å prøve noe slikt:

if (!mysql_select_db($database,$conn))
{
   die(mysql_error($conn));
}

Hva forteller feilmeldingen da?

--

Vennlig hilsen

Erlend Klakegg Bergheim

Ciffor (13-12-2006)
Kommentar
Fra : Ciffor


Dato : 13-12-06 10:38

Erlend Klakegg Bergheim wrote:
>> Ciffor skrev:
>> Men hvorfor fejler funktionen?

> Hva med å prøve noe slikt:
>
> if (!mysql_select_db($database,$conn))
> {
> die(mysql_error($conn));
> }
>
> Hva forteller feilmeldingen da?

Så kom der ingen fejlmelding. Den gik videre i scriptet og fejlede ved
"query".



Jesper Brunholm (12-12-2006)
Kommentar
Fra : Jesper Brunholm


Dato : 12-12-06 22:35

Ciffor skrev:
> Når jeg forsøger at skabe kontakt til min mysql db i et .php, modtager jeg
> følgende besked " Unable to select database".

det skyldes som regel at den database som man har bedt om at der vælges,
ikke findes.

> <?php
>
> $username="root";
> $password="password";
> $database="kontakter";

database er ikke det samme som navnet på den tabel du skal have fat på!
Database er det yderste led, på en EasyPHP ligger der som regel en
'mysql', en 'test' og et par andre, og så laver man selv en database som
man lægger tabeller ind i.

> $conn = mysql_connect('localhost',$username,$password);
>
> mysql_select_db($database,$conn) or die("Unable to select database");

ret til

mysql_select_db($database,$conn) or die(mysql_error());

så får du mere feedback om hvad der går galt

> mysql_query($query);

ligeledes: mysql_query($query)or trigger_error(mysql_error());

> $query = "INSERT INTO kontakter VALUES ('','John','M.I','01234
> 567890','00112 334455','01234
> 567891',johnmi@gowansnet.com','http://www.www.com')";

- og linjerne hvor du definerer queryen bør komme _før_ du bruger den,
ikke omvendt

mvh

Jesper Brunholm

Ciffor (13-12-2006)
Kommentar
Fra : Ciffor


Dato : 13-12-06 10:44

Jesper Brunholm wrote:
> Ciffor skrev:
>> Når jeg forsøger at skabe kontakt til min mysql db i et .php,
>> modtager jeg følgende besked " Unable to select database".
>
> det skyldes som regel at den database som man har bedt om at der
> vælges, ikke findes.

Databasen "kontakter" findes. Det kan jeg se i phpmyadmin hvor jeg også
oprettede den.

>> <?php
>>
>> $username="root";
>> $password="password";
>> $database="kontakter";

> database er ikke det samme som navnet på den tabel du skal have fat
> på! Database er det yderste led, på en EasyPHP ligger der som regel en
> 'mysql', en 'test' og et par andre, og så laver man selv en database
> som man lægger tabeller ind i.

Min database har jeg kaldt "kontakter". I den ligger flere felter (fornavn,
efternavn etc.). Er ikke helt med på hvad du mener med tabel?

>> $conn = mysql_connect('localhost',$username,$password);
>>
>> mysql_select_db($database,$conn) or die("Unable to select database");
>
> ret til
>
> mysql_select_db($database,$conn) or die(mysql_error());

Rettet!

> så får du mere feedback om hvad der går galt
>
>> mysql_query($query);
>
> ligeledes: mysql_query($query)or trigger_error(mysql_error());

Rettet!

>> $query = "INSERT INTO kontakter VALUES ('','John','M.I','01234
>> 567890','00112 334455','01234
>> 567891',johnmi@gowansnet.com','http://www.www.com')";
>
> - og linjerne hvor du definerer queryen bør komme _før_ du bruger den,
> ikke omvendt

Que? Forstår ikke helt (jeg er jo grøn ved du) hvad du mener med "komme før
jeg bruger den".

Men jeg kan sige så meget, at efter jeg indsatte de ændringer du foreslog,
kører den nu scriptet igennem, helt ned til "$query = "INSERT INTO". Her
kommer der en parse error!?



Jesper Brunholm (13-12-2006)
Kommentar
Fra : Jesper Brunholm


Dato : 13-12-06 12:31

Ciffor skrev:
> Jesper Brunholm wrote:
>> Ciffor skrev:
>>> Når jeg forsøger at skabe kontakt til min mysql db i et .php,
>>> modtager jeg følgende besked " Unable to select database".
>> det skyldes som regel at den database som man har bedt om at der
>> vælges, ikke findes.
>
> Databasen "kontakter" findes. Det kan jeg se i phpmyadmin hvor jeg også
> oprettede den.

> Min database har jeg kaldt "kontakter". I den ligger flere felter (fornavn,
> efternavn etc.). Er ikke helt med på hvad du mener med tabel?

Hmmm - altså - en tabel er det man har felter i (felterne kan være af
typen int, varchar, text, enum osv), en database kan have mange tabeller.

Prøv at se <http://www.reg.ca/faq/PhpMyAdminTutorial.html> (det første
jeg lige fandt på Google, som har de illustrationer jeg skal bruge, jeg
ved ikke om den i øvrigt er fabelagtig ).

"mydomain" er databasens navn, når tabeller bliver lavet, kommer de til
at stå nedenfor denne, og er kendetegnede ved at have et "papirsark med
forstørrelsesglas"-ikon til venstre for sig (som er link til at vise
tabellens indhold i stedet for struktur)

<http://www.rochester.edu/its/web/WebHelp/mysql/gettingstarted.html>
viser det samme på en lidt anden måde, hvor databasenavnet står i en
SELECT boks

Jeg vil fastholde at det lyder som om "kontakter" er et tabelnavn.

>> linjerne hvor du definerer queryen bør komme _før_ du bruger den,
>> ikke omvendt
>
> Que? Forstår ikke helt (jeg er jo grøn ved du) hvad du mener med "komme før
> jeg bruger den".

Jo, du skrev:

mysql_query($query);

$query = "INSERT INTO kontakter VALUES ('','John','M.I','01234
567890','00112 334455','01234
567891',johnmi@gowansnet.com','http://www.www.com')";

i '$query = "INS.......'

definerer du variablen $query, men du prøver på at bruge det allerede 2
linjer ovenfor, idet du sender variablen $query med som parameter til
funktionen mysql_query().
PHP læser normalt oppe fra og nedefter i scripts, så den har ikke de
oplysninger til sin rådighed, som den skal have, i linjen med
mysql_query()-kaldet.

Derfor skal du vende det om:

$query = "INSERT INTO kontakter VALUES ('','John','M.I','01234
567890','00112 334455','01234
567891',johnmi@gowansnet.com','http://www.www.com')";

mysql_query($query);

- nøjagtig ligesom du ville skulle hvis det var en variabel der skulle
printes/echoes:

$mitnavn = 'jesper';

echo $mitnavn; /* virker fint, php har lige fået at vide hvad der ligger
i variablen $mitnavn som du skriver ud */
echo $ditnavn; /* virker ikke, php er ikke nået til den linje nedenfor
hvor den får at vide hvad den skal skrive lige nu. Hvis
fejlmeddelelses-niveauet er sat til at give maksimalt meget lyd fra sig
(og det bør det være på din lokale server som du tester på, dermed lader
du PHP hjælpe dig mest), vil PHP komme med en fejlmeddelelse om at
variablen $ditnavn ikke er defineret */

$ditnavn = 'ukendt';

> Men jeg kan sige så meget, at efter jeg indsatte de ændringer du foreslog,
> kører den nu scriptet igennem, helt ned til "$query = "INSERT INTO". Her
> kommer der en parse error!?

Hvad siger den, og hvordan ser dit script helt præcist ud nu?

mvh

Jesper Brunholm

Ciffor (13-12-2006)
Kommentar
Fra : Ciffor


Dato : 13-12-06 13:05

Jesper Brunholm wrote:
> Ciffor skrev:
>> Databasen "kontakter" findes. Det kan jeg se i phpmyadmin hvor jeg
>> også oprettede den.

> Hmmm - altså - en tabel er det man har felter i (felterne kan være af
> typen int, varchar, text, enum osv), en database kan have mange
> tabeller.

Efter nærmere undersøgelse tror jeg du har ret. Databasen hedder mysql og
under den ligger flere tabeller, blandt andet "kontakter".

>>> linjerne hvor du definerer queryen bør komme _før_ du bruger den,
>>> ikke omvendt
>>
>> Que? Forstår ikke helt (jeg er jo grøn ved du) hvad du mener med
>> "komme før jeg bruger den".

> Jo, du skrev:
>
> mysql_query($query);
>
> $query = "INSERT INTO kontakter VALUES ('','John','M.I','01234
> 567890','00112 334455','01234
> 567891',johnmi@gowansnet.com','http://www.www.com')";
>
> i '$query = "INS.......'
>
> definerer du variablen $query, men du prøver på at bruge det allerede
> 2 linjer ovenfor, idet du sender variablen $query med som parameter
> til funktionen mysql_query().
> PHP læser normalt oppe fra og nedefter i scripts, så den har ikke de
> oplysninger til sin rådighed, som den skal have, i linjen med
> mysql_query()-kaldet.
>
> Derfor skal du vende det om:
>
> $query = "INSERT INTO kontakter VALUES ('','John','M.I','01234
> 567890','00112 334455','01234
> 567891',johnmi@gowansnet.com','http://www.www.com')";
>
> mysql_query($query);
>
> - nøjagtig ligesom du ville skulle hvis det var en variabel der skulle
> printes/echoes:

Got it - done.

>> Men jeg kan sige så meget, at efter jeg indsatte de ændringer du
>> foreslog, kører den nu scriptet igennem, helt ned til "$query =
>> "INSERT INTO". Her kommer der en parse error!?
>
> Hvad siger den, og hvordan ser dit script helt præcist ud nu?

Den vender blot tilbage med:
"Parse error: parse error in c:\..... on line 23"

Linie 23 lyder således:
$query = "INSERT INTO kontakter VALUES ('','John','M.I','01234
567890','00112 334455','01234
567891','johnmi@gowansnet.com','http://www.www.com')";

--------HELE SCRIPTET-ændringer i $database-------

<?php

$username="root";
$password="password";
$database="mysql";

$conn =
mysql_connect("C:\Programmer\EasyPHP1-8\mysql\data\mysql\",$username,$password)or
die(mysql_error());

mysql_select_db($database,$conn) or die(mysql_error());

$query = "INSERT INTO kontakter VALUES ('','John','M.I','01234
567890','00112 334455','01234
567891','johnmi@gowansnet.com','http://www.www.com')";

mysql_query($query)or trigger_error(mysql_error());

mysql_close();

?>



Kasper Johansen (12-12-2006)
Kommentar
Fra : Kasper Johansen


Dato : 12-12-06 23:51

Ciffor skrev:
> $conn = mysql_connect('localhost',$username,$password);
> mysql_select_db($database,$conn) or die("Unable to select database");
> mysql_query($query);

Forsøg dig i stedet med følgende (hvis du tror, at adgangskode er forkert):

mysql_connect(...) or die(mysql_error());
mysql_select_db(...) or die(mysql_error());
mysql_query(...) or die(mysql_error());


Så er du sikker på, at du får en beskrivelse (og scriptet afbrydes), når
der opstår en fejl.

Det gør debugging (efter min mening) en hel del lettere. Det gør det
også lettere for os at hjælpe dig, hvis vi får mysql_error()'s melding.


--
Med venlig hilsen
Kasper Johansen

Ciffor (13-12-2006)
Kommentar
Fra : Ciffor


Dato : 13-12-06 10:45

Kasper Johansen wrote:
> Ciffor skrev:
>> $conn = mysql_connect('localhost',$username,$password);
>> mysql_select_db($database,$conn) or die("Unable to select database");
>> mysql_query($query);
>
> Forsøg dig i stedet med følgende (hvis du tror, at adgangskode er
> forkert):
> mysql_connect(...) or die(mysql_error());
> mysql_select_db(...) or die(mysql_error());
> mysql_query(...) or die(mysql_error());
>
>
> Så er du sikker på, at du får en beskrivelse (og scriptet afbrydes),
> når der opstår en fejl.

Done. Ingen umiddelbare fejl, bortset fra at sciptet nu melder en parse
error tilbage ved "$query = INSERT INTO".



mr j (13-12-2006)
Kommentar
Fra : mr j


Dato : 13-12-06 13:01

> $username="root";
> $password="password";
> $database="kontakter";
>
> $conn = mysql_connect('localhost',$username,$password);
>
> mysql_select_db($database,$conn) or die("Unable to select database");
>
> mysql_query($query);
>
> $query = "INSERT INTO kontakter VALUES ('','John','M.I','01234
> 567890','00112 334455','01234
> 567891',johnmi@gowansnet.com','http://www.www.com')";
>
> mysql_close();
>
> ?>

har du en database der hedder kontakter, med en tabel i der også hedder
kontakter ??

Mvh
Morten



Ciffor (13-12-2006)
Kommentar
Fra : Ciffor


Dato : 13-12-06 13:05

mr j wrote:
> har du en database der hedder kontakter, med en tabel i der også
> hedder kontakter ??

Nej, my mistake. Jeg har nu undersøgt sagen og fundet ud af at db hedder
"mysql" og tabellen hedder så "kontakter".



mr j (13-12-2006)
Kommentar
Fra : mr j


Dato : 13-12-06 13:14

>> har du en database der hedder kontakter, med en tabel i der også
>> hedder kontakter ??
>
> Nej, my mistake. Jeg har nu undersøgt sagen og fundet ud af at db hedder
> "mysql" og tabellen hedder så "kontakter".

man skal jo lige lære det hele

Virker det så nu?

Mvh
Morten



Ciffor (13-12-2006)
Kommentar
Fra : Ciffor


Dato : 13-12-06 13:21

mr j wrote:
>>> har du en database der hedder kontakter, med en tabel i der også
>>> hedder kontakter ??
>>
>> Nej, my mistake. Jeg har nu undersøgt sagen og fundet ud af at db
>> hedder "mysql" og tabellen hedder så "kontakter".
>
> man skal jo lige lære det hele

Ja, og det er ikke let materiale, efter min mening

> Virker det så nu?

Nej, desværre. Har nu forenklet scriptet lidt. Så nu ser det sådan her ud:

-------SCRIPT-------

<?php

$username="root";
$password="password";
$database="mysql";

$conn =
mysql_connect("C:\Programmer\EasyPHP1-8\mysql\data\mysql\",$username,$password)or
die(mysql_error());

mysql_select_db($database, $conn) or die(mysql_error());

mysql_query("INSERT INTO kontakter (id, Fornavn, Efternavn) VALUES ('',
'John', 'M.I') ") or die(mysql_error());

mysql_close();

?>



Jesper Brunholm (13-12-2006)
Kommentar
Fra : Jesper Brunholm


Dato : 13-12-06 18:00

Ciffor skrev:
>> Virker det så nu?
>
> Nej, desværre. Har nu forenklet scriptet lidt. Så nu ser det sådan her ud:

> -------SCRIPT-------
>
> <?php
>
> $username="root";
> $password="password";
> $database="mysql";
>
> $conn =
> mysql_connect("C:\Programmer\EasyPHP1-8\mysql\data\mysql\",$username,$password)or
> die(mysql_error());

Jeg tror at du skal have "localhost" eller "127.0.0.1" i stedet for C:\ osv.

Hvor er det at du får fejl nu, og hvad er den fulde fejlmeddelelse?

> mysql_query("INSERT INTO kontakter (id, Fornavn, Efternavn) VALUES ('',
> 'John', 'M.I') ") or die(mysql_error());

Du kan altid checke at den samme query kører godt nok i PHPmyadmin - så
ved du at det ikke er en mysql-fejl.

mvh

Jesper Brunholm

Ciffor (13-12-2006)
Kommentar
Fra : Ciffor


Dato : 13-12-06 19:01

Jesper Brunholm wrote:
> Jeg tror at du skal have "localhost" eller "127.0.0.1" i stedet for
> C:\ osv.

Det er i hvertfald det der står beskrevet på forskellige php sites. Men så
får jeg en fejl om at databasen ikke kan findes. Men hvis jeg nu skulle
placere min db i roden (localhost). Hvilke filer fra mysql skal jeg så
flytte over og kan det lade síg gøre den vej rundt?

> Hvor er det at du får fejl nu, og hvad er den fulde fejlmeddelelse?

Den fulde fejlmeddelelse er:
"Parse error: parse error in c:\..... on line 23"

>> mysql_query("INSERT INTO kontakter (id, Fornavn, Efternavn) VALUES
>> ('', 'John', 'M.I') ") or die(mysql_error());

> Du kan altid checke at den samme query kører godt nok i PHPmyadmin -
> så ved du at det ikke er en mysql-fejl.

Forsøgte i phpmyadmin som du foreslog. Den fejlede konstant og for hver
fejl, rettede jeg til. Jeg nåede frem til følgende der virkede:

INSERT INTO kontakter (id, Fornavn, Efternavn) VALUES ('John', 'M.I')

Så alt tyder på, at der er en fejl i syntaxen i den del af scriptet der
handler om INSERT TO. Men iht.til min bog "Introduktion til PHP, mysql og
Apache" samt forskellige sites på nettet, syntes jeg ikke at syntax kan være
meget anderledes.

Måske jeg burde fjerne easyphp og i stedet benytte XAMPP. Den benyttede jeg
for år tilbage med godt resultat. Dengang kom jeg da videre.



Dennis Munding (13-12-2006)
Kommentar
Fra : Dennis Munding


Dato : 13-12-06 21:51

Hej Ciffor!
"Ciffor" <clauss@SLETpostkasse.net> skrev i en meddelelse
news:45804251$0$136$157c6196@dreader2.cybercity.dk...
> Forsøgte i phpmyadmin som du foreslog. Den fejlede konstant og for hver
> fejl, rettede jeg til. Jeg nåede frem til følgende der virkede:
>
> INSERT INTO kontakter (id, Fornavn, Efternavn) VALUES ('John', 'M.I')
>
> Så alt tyder på, at der er en fejl i syntaxen i den del af scriptet der
> handler om INSERT TO. Men iht.til min bog "Introduktion til PHP, mysql og
> Apache" samt forskellige sites på nettet, syntes jeg ikke at syntax kan
> være meget anderledes.

Hvis du har skrevet _nøjagtig_, som du har postet her i gruppen, så er der
en lille, men vigtig fejl i flg.:

$query = "INSERT INTO kontakter VALUES
('','John','M.I','01234567890','00112334455','01234567891',johnmi@gowansnet.com','http://www.www.com')";

Der mangler en single-qoute ( ' ) lige før j'et ved email-adressen!

> Måske jeg burde fjerne easyphp og i stedet benytte XAMPP. Den benyttede
> jeg for år tilbage med godt resultat. Dengang kom jeg da videre.

Ikke nødvendigt - jeg bruger det også helt uden problemer (ud over dem jeg
selv laver, når jeg koder...), men jeg har dog aldrig prøvet at flytte
rundt på root - kan ikke se det nødvendige i det, men det er nok en
temperamentssag...
Har lige opgraderet til version 1.8


Med venlig hilsen
--
Dennis Munding
http://pe-vagtservice.dk/ -Et sikkert valg til at passe på dine værdier!
http://munding-interieur.dk/ -Alt godt til hjemmet - på Frederiksberg!
http://munding-webdesign.dk/ -Vi ses! - ganske enkelt...



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste