K K++ Medlem sedan juli 2002 171 inlägg Frågan 3 aug. 2004 10:52 #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�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";
?>
Matte Medlem sedan aug. 2000 2 975 inlägg 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�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);
}
}
K K++ Medlem sedan juli 2002 171 inlägg 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
Matte Medlem sedan aug. 2000 2 975 inlägg 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.
K K++ Medlem sedan juli 2002 171 inlägg 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�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";
?>
Matte Medlem sedan aug. 2000 2 975 inlägg Testa då istället med:
$result = mysql_query($query, $this->link) or die("SQL: $query <br>".mysql_error());
return $result;
K K++ Medlem sedan juli 2002 171 inlägg Nu fungerade det, även om jag inte tycker att det borde göra det.. :)
Matte Medlem sedan aug. 2000 2 975 inlägg 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.
J jme Medlem sedan maj 2001 2 237 inlägg 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. :)