Fout in Category script

  • Onderwerp starter Onderwerp starter eeyk
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

eeyk

Terugkerende gebruiker
Lid geworden
28 mrt 2007
Berichten
1.232
ik krijg deze fouten

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/id02117/domains/crime-ware.nl/public_html/i-photo/all.php on line 46

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/id02117/domains/crime-ware.nl/public_html/i-photo/all.php on line 69

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/id02117/domains/crime-ware.nl/public_html/i-photo/all.php on line 92

dit is het script

PHP:
<?
include("config.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title></title>
</head>
<body>
<table summary="" width="100%">
<tr>
<td>
<?
if(isset($_GET['all'])){
?>
<B>Category Dir: /upload/</b><br /><br />
</td>
</tr>
<tr>
    <? 
    $select = mysql_query("SELECT * FROM `last` ORDER BY url"); 
    echo "<ol>"; 
    while($list = mysql_fetch_object($select)) { 
    echo "</tr><tr><td><li><b><font color=\"#000000\"> <a href=\"http://crime-ware.nl/i-photo/upload/{$list->url}\" target=\"_blank\">$list->url<br></td></tr>"; 
    } 
    echo "</ol>"; 
    ?> 
</td>
<?
exit;
}
?>
</table>
</body>
</html>
<?
if(isset($_GET['sof'])){
?>
<B>Category Dir: /upload/Software</b><br /><br />
</td>
</tr>
<tr>
    <? 
    $select = mysql_query("SELECT * FROM `last` ORDER BY `url` Where `cat`='1'"); 
    echo "<ol>"; 
    while($list = mysql_fetch_object($select)) { 
    echo "</tr><tr><td><li><b><font color=\"#000000\"> <a href=\"http://crime-ware.nl/i-photo/upload/{$list->url}\" target=\"_blank\">$list->url<br></td></tr>"; 
    } 
    echo "</ol>"; 
    ?> 
</td>
<?
exit;
}
?>
</table>
</body>
</html>
<?
if(isset($_GET['im'])){
?>
<B>Category Dir: /upload/images</b><br /><br />
</td>
</tr>
<tr>
    <? 
    $select = mysql_query("SELECT * FROM `last` ORDER BY `url` WHERE `cat`='2'"); 
    echo "<ol>"; 
    while($list = mysql_fetch_object($select)) { 
    echo "</tr><tr><td><li><b><font color=\"#000000\"> <a href=\"http://crime-ware.nl/i-photo/upload/{$list->url}\" target=\"_blank\">$list->url<br></td></tr>"; 
    } 
    echo "</ol>"; 
    ?> 
</td>
<?
exit;
}
?>
</table>
</body>
</html>
<?
if(isset($_GET['mu'])){
?>
<B>Category Dir: /upload/music</b><br /><br />
</td>
</tr>
<tr>
    <? 
    $select = mysql_query("SELECT * FROM `last` ORDER BY `url` WHERE `cat`='3'"); 
    echo "<ol>"; 
    while($list = mysql_fetch_object($select)) { 
    echo "</tr><tr><td><li><b><font color=\"#000000\"> <a href=\"http://crime-ware.nl/i-photo/upload/{$list->url}\" target=\"_blank\">$list->url<br></td></tr>"; 
    } 
    echo "</ol>"; 
    ?> 
</td>
<?
exit;
}
?>
</table>
</body>
</html>
 
Laatst bewerkt:
while($list = mysql_fetch_object($select)) {

Heeft $list wel een waarde en bestaat ie wel?
 
@panmeister: Dit wordt in 90% van de WHILE-lussen voor een database gebruikt.

$list wordt de eerste keer aangemaakt en vervolgens gaat het alle elementen uit het resultaat van de database bij langs.

Ontopic: Grote kans dat er iets met je database verkeerd gaat.
Zorg dat je bij elke query een fout kunt afvangen.

Bij de eerste zal dat zo zijn:
PHP:
$select = mysql_query("SELECT * FROM `last` ORDER BY url");
if(!$select) {
  echo 'Er is een fout opgetreden! MySQL geeft dit terug: '. mysql_error();
}
 
Het heet niet voor niets een variabele ;) Die kun je noemen wat je wilt.

Daarnaast komt er nu geen array uit de query maar een object aangezien de functie mysql_fetch_object() wordt gebruikt.
 
Het heet niet voor niets een variabele ;) Die kun je noemen wat je wilt.

Daarnaast komt er nu geen array uit de query maar een object aangezien de functie mysql_fetch_object() wordt gebruikt.

Ik roep mijn uit de database gehaald veld op op deze manier:
$array['veldnaam'];
De $array staat dus in de while lus en de naam tussen de haakjes is de naam van het veld wat hij moet ophalen. Als ik dan een print_r doe op de $array zie je dat (in dit voorbeeld als je 1 veld hebt geselecteerd in het select commando), hij 2 waarden erin heeft staan:
$array['0'] en $array['veldnaam'] met beide dezelfde inhoud. Is dit dan geen array maar een object???

Overigens kan ik de inhoud op geen enkele andere manier ophalen, zijn $list->url werkt bij mij niet
 
PHP:
$nameQuery = "SELECT naam FROM users";
$nameResult = mysql_query($nameQuery);
if(!$nameResult) {
  echo 'Er is een fout opgetreden.';
}
// Using mysql_fetch_object
echo 'Resultaten d.m.v. mysql_fetch_object';
while($object = mysql_fetch_object($nameResult)) {
  echo $object->naam .'<br />';
}
// Using mysql_fetch_assoc
echo '<hr />Resultaten d.m.v. mysql_fetch_assoc';
while($array = mysql_fetch_assoc($nameResult);
  echo $array['naam'] .'<br />';
}
// Using mysql_fetch_array
echo '<hr />Resultaten d.m.v. mysql_fetch_array';
while($array = mysql_fetch_array($nameResult);
  echo $array[0] .'<br />';
}
Alles op een rijtje.

Gebruik het een keer bij een database van jezelf en je zult zien dat de resultaten hetzelfde zijn.
 
je krijgt meer informatie over de fout als je dit intypt
PHP:
$query= mysql_query("SELECT * FROM tabel") or die(mysql_error());

Wat krijg je dan?
 
Nee, dat is geen goede manier. Sowieso klopt er niets van, je wijst het resultaat van de uitvoer van je query toe aan een variabele 'query'. :rolleyes:


Voor de zoveelste keer:

Gebruik geen or die()!

Als je or die() gebruikt, stopt je script. Dat wil je niet, je wilt namelijk kijken waar de fout zich bevindt, eventueel een log wegschrijven, een melding naar de gebruiker sturen, etc. Een betere manier is de volgende:

PHP:
$sQuery = "SELECT";
$rResult = mysql_query($sQuery);

if(!$rResult){

  echo 'Er is een fout opgetreden in de query: <br />' . 
          $sQuery 
          .' met de foutmelding: <br />'.
          mysql_error();

}else{

// Gelukt.

}


Ik herhaal alle dingen rondom PHP/MySQL zo'n beetje elke dag, maar een sticky zal er wel niet in zitten.
 
Laatst bewerkt:
maar

$select = mysql_query("SELECT * FROM `last` ORDER BY url");

werkt

maar zo dra WHERE er bij komt werkt het niet meer

$select = mysql_query("SELECT * FROM `last` ORDER BY url WHERE `cat`='1'");

1 = Software
2 = Images
3 = music
 
$select = mysql_query("SELECT * FROM `last` WHERE `cat`='1'" ORDER BY url );
 
$select = mysql_query("SELECT * FROM `last` WHERE `cat`='1'" ORDER BY url );

Erg bedankt

pankmeister !

ik heb het beetje veranderd in

$select = mysql_query("SELECT * FROM `last` WHERE `cat`='1' ORDER BY `url`");
$select = mysql_query("SELECT * FROM `last` WHERE `cat`='2' ORDER BY `url`");
$select = mysql_query("SELECT * FROM `last` WHERE `cat`='3' ORDER BY `url`");

nu wekt het perfect
 
Je moet eerst alles filteren voor je het geheel kunt sorteren, daar zat je foutje ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan