MySQL Problem mysql_num_rows()

Status
Niet open voor verdere reacties.

Daanie

Gebruiker
Lid geworden
28 okt 2012
Berichten
31
Hallo Daanie

Dit probleem mysql_num_rows() expects parameter 1 to be resource weet eimand het

Groetjes daanie
 
Zet die fouttekst in Google, druk op enter en je krijgt een lijst resultaten waarin die foutmelding de hoofdrol speelt.

Ht schijnt dat de melding veroorzaakt wordt doordat de sql-query die je probeert uit te voeren, geen resultaat oplevert.
Dus de kans is groot dat je query niet goed is.

Een gebrek aan query-uitvoer betekent dat er geen rijen zijn, dan krijg je ergens een boolean "false" en dat geeft dan de bewuste foutmelding.

Volgens Google.
 
En nu heb ik deze

Parse error: syntax error, unexpected .................................... on line 3
 
heb je die puntjes er zelf ingezet of?? want nu kunnen we er niet veel mee.
 
je zal toch echt met iets meer informatie moeten komen voor specifieke hulp. een stukje van je script zou handig zijn?

de eerste foutmelding duid op een fout in de query die je als parameter gebruikt.
de tweede melding geeft een fout in syntax aan, je hebt alleen precies het stukje waar de fout wordt aangegeven weggehaald.
 
je zal toch echt met iets meer informatie moeten komen voor specifieke hulp. een stukje van je script zou handig zijn?

de eerste foutmelding duid op een fout in de query die je als parameter gebruikt.
de tweede melding geeft een fout in syntax aan, je hebt alleen precies het stukje waar de fout wordt aangegeven weggehaald.

Zo goed?
PHP:
<?php
mysql_connect("localhost", "bwnlovs_djp", "Een wachtwoord Geheim");
if (!mysql_num_rows($ban_ 1) == NULL) {
echo '<b>Foutmelding:</b><br>Het verbinden met de database is niet gelukt!';
exit;
}

$ip = $_SERVER['REMOTE_ADDR'];
$tijd = time();
$ban_1 = mysql_query("SELECT * FROM ban WHERE ip='".$ip."' AND (tijd_2>'".$tijd."' OR tijd_2='0')");
if(mysql_num_rows($ban_1) == NULL) {
} else {
$ban_2 = mysql_fetch_assoc($ban_1);
$bericht = htmlspecialchars(stripslashes($ban_2['bericht']));
$tijd_1 = date("d-m-Y H:i", $ban_2['tijd_1']);
if($ban_2['tijd_2'] == "0") {
$tijd_2 = "Permanent";
} else {
$tijd_2 = date("d-m-Y H:i", $ban_2['tijd_2']);
}
echo '<html>
 
Laatst bewerkt door een moderator:
Regel 3 gaat lastig worden. Daarnaast heb je een variabele met een spatie er in, dat werkt niet.

Vermoedelijk wil je dit:
PHP:
mysql_connect("localhost", "bwnlovs_djp", "Een wachtwoord Geheim") or die('<b>Foutmelding:</b><br>Het verbinden met de database is niet gelukt!');

Verder moet je na een mysql_query() het result opvragen met mysql_result()
Dus zo:
PHP:
$ban_1 = mysql_query("SELECT * FROM ban WHERE ip='".$ip."' AND (tijd_2>'".$tijd."' OR tijd_2='0')");
if(mysql_num_rows($ban_1) == NULL) {
    // Iets van een melding met geen resultaten
} else {
    $result = mysql_result($ban_1);
    while($row = mysql_fetch_assoc($result))
    {
        // Vervangen door je eigen weergave van de resultaten
        var_dump($row);
    )
}
 
Laatst bewerkt:
oke ik ga is proberen

Dus moet het zo

PHP:
$ban_1 = mysql_query("SELECT * FROM ban WHERE ip='".$ip."' AND (tijd_2>'".$tijd."' OR tijd_2='0')");
if(mysql_num_rows($ban_1) == NULL) {
   Parse error: syntax error, unexpected '}' in /home/bwnlovs/domains/gekkiegek.nl/public_html/staffpaneel/systemen/ban/index_1.php on line 4
} else {
    $result = mysql_result($ban_1);
    while($row = mysql_fetch_assoc($result))
    {
        // Vervangen door je eigen weergave van de resultaten
        var_dump($row);
    )
}
 
Laatst bewerkt door een moderator:
Dat is nagenoeg mijn code alleen zit er een error in geplakt
Parse error: syntax error, unexpected '}' in /home/bwnlovs/domains/gekkiegek.nl/public_html/staffpaneel/systemen/ban/index_1.php on line 4

Wat probeer je met bovenstaand bericht te zeggen?
 
Het wordt wel een heel warrig verhaal zo.

if(mysql_num_rows($ban_1) == NULL) {
// Iets van een melding met geen resultaten


mysql_num_rows() geeft het getal nul terug als er geen resulaten zijn, dus: 0, niet NULL. Dat is een wezenlijk verschil.
Daarnaast moet je perse controleren of de query wel is uitgevoerd.

De correcte manier is:
PHP:
// Voer de query uit en zie of er iets anders dan FALSE terugkwam, want FALSE betekent dat de query niet kon worden uitgevoerd.
if (false === ($banResult = mysql_query("SELECT * FROM ban WHERE ip='".$ip."' AND (tijd_2>'".$tijd."' OR tijd_2='0')"))
{
  echo 'Query error.'; // plaats hier wat je wilt doen als de query niet kon worden uitgevoerd door een of ander probleem
}
else
{
  // Query is uitgevoerd, nu kijken of er resultaten zijn
  if(mysql_num_rows($banResult) ==0) {
    // Iets van een melding met geen resultaten
  } else {
    while($row = mysql_fetch_assoc($banResult))
    {
        // Vervangen door je eigen weergave van de resultaten
        var_dump($row);
    )
  }
}


En dit staat gewoon in de handleiding, compleet met werkend voorbeeld: http://nl3.php.net/manual/en/function.mysql-fetch-assoc.php
 
Met alle posts hierboven zoals ze zijn kan ik me voorstellen dat je het niet meer volgt, dat was ook de reden waarom ik een zo compleet mogelijk voorbeeld post van wat er allemaal gedaan moet worden.

Het belangrijkste in het verhaal is dat mysql_num_rows() moet worden aangeroepen met een resultset als parameter, en een resultset komt uit mysql_query(). Als de query niet niet correct was, omdat er b.v. een tikfout in zit, er FALSE uit mysql_query() en dan kun je dus geen numrows meer opvragen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan