Avatar billede matz Nybegynder
31. oktober 2007 - 10:16 Der er 14 kommentarer og
1 løsning

login fejl mysql_fetch_object supplied argument is not a valid

Koden:

<?php
session_start();

//Lav connection til DB'en, tilpas til dit eget brug
include_once('connect2.php');
   
    $dotjek = "SELECT brugernavn, password, admin FROM bruger WHERE brugernavn='$_POST[brugernavn]'";
    $test_2 = new sql();
    $test_2->connect();
    $test_2->q($dotjek);


//Er der klikket på submit?
if(isset($_POST['brugernavn'], $_POST['password'])) {

//Laver "$brugertjek" for at hente de enkelte kolonners værdi
$brugertjek = mysql_fetch_object($dotjek);



//brugernavnet fandtes, og session "brugernavn" sættes
$_SESSION['brugernavn'] = $_POST['brugernavn'];

    //Hvis indtastet password IKKE er korrekt.
    //Husk at vi har md5 krypteret password'et i tabellen, så det gøres også her
    if($brugertjek->password != md5($_POST['password'])) {
    $_SESSION['password_fejl'] = 1;
    header("Location:logind.php");
exit;
    //Både brugernavn og password stemte, så vi sætter endnu en session, "admin"
    //og giver den feltets værdi fra "tester" og redirecter til beskyttet side
    }else{
    $_SESSION['admin'] = $brugertjek->admin;
    header("Location:index.php");
exit;
    }

//Fjerner $dotjek fra ram
mysql_free_result($dotjek);
$test_2->close();
}
?>

Fejl:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\wamp\www\prove\admin2\make_logind.php on line 17

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\prove\admin2\make_logind.php:17) in C:\wamp\www\prove\admin2\make_logind.php on line 28
Avatar billede jakobdo Ekspert
31. oktober 2007 - 10:44 #1
Prøv at tilføj:

$brugertjek = mysql_fetch_object($dotjek) or die(mysql_error());
Avatar billede jakobdo Ekspert
31. oktober 2007 - 10:45 #2
Du mangler mysql_query();
Avatar billede matz Nybegynder
31. oktober 2007 - 10:53 #3
mysql_query(); bliver lavet i q();

Kode for connect:

class sql
{
    var $_conn;
    var $_queries = array();
    var $_activeQuery;
  /* husk at indsætte de rigtige oplysniner til din database */
    function connect(){
      $dbhost = "localhost";
      $database = "mobler";
      $dbuser = "root";
      $dbpass = "";
   
      $this->_conn = mysql_connect($dbhost, $dbuser, $dbpass);
      mysql_select_db($database, $this->_conn);
    }
 
    function q($sql_query){
        $query = mysql_query($sql_query, $this->_conn) or die(mysql_error());
      if($query !== false){
          array_unshift($this->_queries, $query);
        $this->_activeQuery = $query;
        return true;
      }
      return false;
    }
  /* Fjernede $q fordi jeg ikke lige kunne regne ud hvorfor den var der */
    function a(){
        $array = null;
      if($this->_activeQuery){
          $array = mysql_fetch_array($this->_activeQuery);
      }
      return $array;
    }
 
    function free(){
        if($this->_activeQuery){
          @mysql_free_result( $this->_activeQuery );
        $this->_activeQuery = array_shift( $this->_queries );
      }
    }
 
    function num_rows(){
        return mysql_num_rows($this->_activeQuery);
    }
 
    function close(){
      @mysql_close($this->_conn);
    }
}
?>
Avatar billede matz Nybegynder
31. oktober 2007 - 10:54 #4
med die bag på siger den:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\wamp\www\prove\admin2\make_logind.php on line 17
Avatar billede jakobdo Ekspert
31. oktober 2007 - 11:00 #5
Skal du så ikke have bygget mysql_fetch_object() ind i din sql-klasse?
Avatar billede matz Nybegynder
31. oktober 2007 - 11:07 #6
Fatal error: Call to undefined method sql::fetch_object() in C:\wamp\www\prove\admin2\make_logind.php on line 17

Og jeg har sat dette ind i connect:

function fetch_object(){
        return mysql_fetch_object($this->_activeQuery);
    }
Avatar billede jakobdo Ekspert
31. oktober 2007 - 11:18 #7
Du husker:

$brugertjek = $test_2->fetch_object($dotjek); ikke?
Avatar billede matz Nybegynder
31. oktober 2007 - 11:28 #8
Jo selvfølgelig har jeg skrevet:

$brugertjek = $test_2->fetch_object($dotjek);
Avatar billede jakobdo Ekspert
31. oktober 2007 - 12:47 #9
Prøv at fjern: $dotjek

$brugertjek = $test_2->fetch_object();
Avatar billede matz Nybegynder
31. oktober 2007 - 13:06 #10
Den siger desværre det samme...

Fatal error: Call to undefined method sql::fetch_object() in C:\wamp\www\prove\admin2\make_logind.php on line 17
Avatar billede matz Nybegynder
31. oktober 2007 - 14:00 #11
Det virkede med assoc
Avatar billede jakobdo Ekspert
31. oktober 2007 - 19:51 #12
What?
Avatar billede matz Nybegynder
31. oktober 2007 - 21:55 #13
Istedet for at bruge fetch_object i klassen. Så brugte jeg fetch_assoc i klassen. Også virkede den.

Men lig et svar :)
Avatar billede jakobdo Ekspert
01. november 2007 - 07:45 #14
Svar!

Dog virker det som en ikke helt korrekt måde du laver dit tjek.
Du bør vel tjekke:
$test2->num_rows();

Og num_rows() er så en funktion der bygger på: mysql_num_rows() hvor den skal returnere 1 hvis brugeren findes, eller TRUE.
Avatar billede jakobdo Ekspert
17. juni 2008 - 08:07 #15
Takker for point.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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