Avatar billede svinth Nybegynder
22. maj 2001 - 17:28 Der er 3 kommentarer og
2 løsninger

Apache+PHP+MySQL: not a valid MySQL-Link resource

Hej MySQL gruppe.

Jeg har stablet en server på benene:

Apache 1.3.19
PHP 4.0.5
MySQL 3.23.38

Jeg har oprettet en bruger, men når jeg forsøger at forbinde til denne bruger og tage fat i en database får jeg fejlen:


Warning: Supplied argument is not a valid MySQL-Link resource in c:/login.php3 on line 10
MySQL error:

login.php3 ser ud som følger:

<?
  $f_includepath= \"function/\";
  include $f_includepath.\"dbconnec.php3\";
  $db=db_connect();
 
  $SQL = \"SELECT * FROM users\";


//Get userspecific data
  $result = mysql_query($SQL,$db)
      or die (\"MySQL error: \" . mysql_error() . \"<P>\");
  $row=mysql_fetch_array($result);
  $id=$row[\"id\"];
  echo $id;
?>

db_connect er lavet således:

function db_connect()
//************************************************************************
//*  function    db_connect - connects to and selects database            *
//*  Input:    NULL                                                    *
//*  Output:    $db, link to database                                    *
//************************************************************************
{
  $db = mysql_connect(\"localhost:3306\",\"Test\",\"Test\");
  $db = mysql_select_db(\"MinTest\");
  return $db;
}

Hvori ligger fejlen?

M.v.h. Svante
Avatar billede eg Nybegynder
22. maj 2001 - 17:43 #1
Du behøver blot skrive:

$result = mysql_query($SQL)
      or die (\"MySQL error: \" . mysql_error) . \"<P>\");
Avatar billede svinth Nybegynder
22. maj 2001 - 18:14 #2
Hej igen.

Hvorfor virker det???
Hvorfor virkede det andet ikke?
Hvad er sikkerhedsforskellen på de to fremgangsmåder?

M.v.h. Svante
Avatar billede chruker Nybegynder
22. maj 2001 - 18:47 #3
Hvorfor virker det ??? >> Det virker fordi mysql_query($SQL) blot bruger en af de database link som er åbent.

Hvorfor virkede det andet ikke ? >>> Det var fordi at variablen $db i db_connect() bliver overskrevet af mysql_select_db() kommandoen. Hvis du nøjes med mysql_select_db(\"MinTest\");  så burde det virke.

Forskellen på de to er at du med den hvor du angiver database linket, letter kan holde styr på connections til flere forskellige database servere.
Avatar billede eg Nybegynder
22. maj 2001 - 20:56 #4
Hvis du vil bruge querys til en speciel satabase skal du bruge:

mysql_db_query();

læs om den i php-manualen.

--EG--
Avatar billede svinth Nybegynder
23. maj 2001 - 11:56 #5
Takker!

M.v.h. Svante
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
Computerworld tilbyder specialiserede kurser i database-management

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