Waarom foutmelding mysqli_num_rows()

Status
Niet open voor verdere reacties.

weswillem

Gebruiker
Lid geworden
8 nov 2011
Berichten
310
Waarom krijg ik die foutmelding?

PHP:
if(geregistreerd( 'naam',$_POST['naam'],$conn)) {
		$error[] = '<strong>'.$_POST['naam'].'</strong> is reeds geregistreerd.';
	}
waarbij $methode = naam en $var = variabele
PHP:
function geregistreerd($methode,$var, $conn) {    
$result=mysqli_query($conn,"SELECT COUNT(naam) FROM gebruikers WHERE ".$methode."=".$var."");
$aantalrijen = mysqli_num_rows($result);
if ($aantalrijen == 0) {
    echo $aantalrijen;
		return FALSE; // nog niet geregistreerd
	} else {
	   echo $aantalrijen;
		return TRUE; // reeds geregistreerd
	}
}
 
Welke foutmelding precies?
 
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www
Onderstaande code is eigenlijk de bedoeling, maar moet deze aanpassen aan mysqli.
Maar dat gaat voor mij helemaal fout, omdat ik dit nog niet door heb.
b.v.d.

PHP:
function geregistreerd($var,$methode) {
	$check1 = mysql_result(mysql_query("SELECT COUNT(gebruikersnaam) FROM leden_temp WHERE ".$methode."='".$var."'"),0); // totaal aantal records uit de tijdelijk tabel
	$check2 = mysql_result(mysql_query("SELECT COUNT(id) FROM leden WHERE ".$methode."='".$var."'"),0); // totaal aantal records uit de ledentabel
	$check = $check1 + $check2; // De 2 totalen optellen
	if($check == 0) {
		return FALSE; // nog niet geregistreerd
	} else {
		return TRUE; // reeds geregistreerd
	}
}
 
Pas foutafhandeling toe op je queries. En gebruik mysqli-functies. GEEN mysql-functies dus!
 
Ik probeer dat ook om die laatste code om te zetten naar mysqli, maar begrijp de regels nog niet helemaal.
Want waarom staat die 0 aan het eind en moet ik ook $conn daarin toepassen?
b.v.d.
 
mysql_result is verouderd. gebruik liever mysqli_fetch_assoc()
 
ik doe het op volgende mannier mijn oude script staat er ook bij functie in class

private function tablelenght(){
/*$dbSql='SELECT 1 FROM persoon';//simples voor controle lengte
$dbStmt = \Db::GET()->prepare($dbSql);
$dbStmt->execute();
$aantal = $dbStmt->rowCount();*/
return current($this->DB->query('select count(*) from table')->fetch());
}
 
Tot op heden lukt het mij nog steeds niet om de vraag werkend te krijgen.
In de index.php is een controle ingebouwd om een check te doen of iemand
al geregistreerd is of wel is aangemeld maar nog niet geactiveerd.
door de navolgende code:
PHP:
if(geregistreerd('gebruikersnaam',$_POST['gebruikersnaam'],$conn)) {
		$error[] = '<strong>'.$_POST['gebruikersnaam'].'</strong> is reeds geregistreerd.';
	}
	if(geregistreerd('email',$_POST['email'],$conn)) {
		$error[] = '<strong>'.$_POST['email'].'</strong> is reeds geregistreerd. Slechts één account per e-mailadres is toegestaan.';
	}
In de index.php word ik doorgestuurd naar de config.php alwaar de functie staat,
om de controle uit te voeren.
Maar geef bij -- if ($result)-- een error.
PHP:
function geregistreerd($methode,$var, $conn) {
$result=mysqli_query($conn,"SELECT COUNT(id) FROM gebruikers WHERE ".$methode."=".$var."");
    if ($result){
        $aantal = mysqli_num_rows($result);
        if ($aantal == 0) {
               echo $aantal;
               return FALSE; // nog niet geregistreerd
        } else {
               echo $aantal;
               return TRUE; // reeds geregistreerd
       }
   }else{
           echo "Er is iets fout gegaan: " . mysqli_error();
   }
}
 
Laatst bewerkt:
Een error....... duidelijk?
 
In de code geef hij daar rode streep aan. Ik weet even ook niet meer hoe ik dit op lossen. Er staat iets fout maar zie niet wat.
 
Net was het een error, nu een rode streep?
Wees a.u.b. even duidelijk wat er gebeurt, wat je ziet en wat je precies doet?

We willen je graag helpen, maar wees even wat specifieker!
 
Ik krijg een syntaxerror in phpdesigner8 op die regel. Een programma waarin ik de code maakt. Ik probeer zo duidelijk mogelijk te zijn voor mij doen, maar begrijp uw reactie.
 
Vermeld a.u.b. alle details die nodig zijn. Welke foutmelding krijg je precies?
 
if ($result){ kan je verander naar if ($result!=false){

toch effen opletten dit[$aantal = mysqli_num_rows($result);] zal altijd de zelfde waarde weergeven denk er eens over na logische fout

de query eens bekijken wat het result zie onderaan
PHP:
$result=mysqli_query($conn,'SELECT COUNT(id)as DitIsHetSomResultEnDoorAsWordDeNaamAangepast FROM gebruikers WHERE '.$methode.'='.$var.'');
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan