webForumDet fria alternativet

Scope, Objekt, funktioner

PHP

8 svar · 262 visningar · startad av K++

Medlem sedan juli 2002171 inlägg
Frågan#1

Har lite problem med scopet mellan funktionerna. Hur fixar jag detta?

<?php

class dl{

	function anslut($host,$name,$pwd){
		$link = mysql_connect($host,$name,$pwd);
	}

	function select($db){
		mysql_select_db($db,$link) or die("Kunde ej v&#65533;lja databasen $db");
	}

	function query($table,$condition,$sort){	
		$query = "SELECT * FROM $table";
		if($condition != "")
		$query .= " WHERE $condition";
		if($sort != "")
		$query .= " ORDER BY $sort";
		return mysql_query($query,$link);
	}

}

$dl = new dl();
$dl->anslut("localhost","mysql","mysql");
$dl->select("test");
$result = $dl->query("test","","online DESC");

echo "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
   echo "\t<tr>\n";
   foreach ($line as $col_value) {
       echo "\t\t<td>$col_value</td>\n";
   }
   echo "\t</tr>\n";
}
echo "</table>\n";

?>
Medlem sedan aug. 20002 975 inlägg
#2

Testa så här:

class dl{

    var $link;

    function anslut($host, $name, $pwd){
        $this->link = mysql_connect($host, $name, $pwd);
    }

    function select($db){
        mysql_select_db($db, $this->link) or die("Kunde ej v&#65533;lja databasen $db");
    }

    function query($table, $condition, $sort){    
        $query = "SELECT * FROM $table";
        if($condition != "")
        $query .= " WHERE $condition";
        if($sort != "")
        $query .= " ORDER BY $sort";
        return mysql_query($query, $this->link);
    }

}
Medlem sedan juli 2002171 inlägg
#3

tack, det fungerae, men en fråga till:'
Får fram detta då
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/simple/dl.php on line 35

Medlem sedan aug. 20002 975 inlägg
#4

Endast för felsökning, ändra till:

return mysql_query($query, $this->link) or die("SQL: $query <br>".mysql_error());

Vad får du ut på skärmen ?

Ett tips.
Använd mysql_fetch_assoc($result) istället för mysql_fetch_array($result, MYSQL_ASSOC).
Du får fram samma sak, men det går snabbare.

Medlem sedan juli 2002171 inlägg
#5

Fick detta felmedelandet:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/simple/da.php on line 33
"; ?>?>le>\n"; ?>>

Med denna kod

<?php
class dl{

    var $link;

    function anslut($host, $name, $pwd){
        $this->link = mysql_connect($host, $name, $pwd);
    }

    function select($db){
        mysql_select_db($db, $this->link) or die("Kunde ej v&#65533;lja databasen $db");
    }

    function query($table, $condition, $sort){    
        $query = "SELECT * FROM $table";
        if($condition != "")
        $query .= " WHERE $condition";
        if($sort != "")
        $query .= " ORDER BY $sort";
       return mysql_query($query, $this->link) or die("SQL: $query <br>".mysql_error());
    }
}

$dl = new dl();
$dl->anslut("localhost","mysql","mysql");
$dl->select("abc");
$result = $dl->query("film","","");

echo "<table>\n";
while ($line = mysql_fetch_assoc($result)) {
   echo "\t<tr>\n";
   foreach ($line as $col_value) {
       echo "\t\t<td>$col_value</td>\n";
   }
   echo "\t</tr>\n";
}
echo "</table>\n";

?>
Medlem sedan aug. 20002 975 inlägg
#6

Testa då istället med:

$result = mysql_query($query, $this->link) or die("SQL: $query <br>".mysql_error());
return $result;
Medlem sedan juli 2002171 inlägg
#7

Nu fungerade det, även om jag inte tycker att det borde göra det.. :)

Medlem sedan aug. 20002 975 inlägg
#8

Den koden var för felsökning.

Fick du inte fram några felmeddelanden, och allt fungerade, så borde det också fungera med:

return mysql_query($query, $this->link);

Det gör det i vilket fall när jag testar.

Medlem sedan maj 20012 237 inlägg
#9

du får nog det fel för att ett fel händer vid queryn och då sätts $result till false och det är inte en giltig parameter till myslq_fetch_assoc(). Tog mig ett tag att hitta det fel som jag själv hade.

Är van med Java och att metoderna returnerar antingen en sorts typ eller null och inte vad som helst som man kan göra med php. :)

263 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)