Küçük bir PHP fonksiyonu aggrivated beklenmedik T_ELSE

4 Cevap php

Ben bu işlevi son başka bir çok aggrivated unexped T_ELSE var.

function QueryPeople($stringQuery, $table, $max, $cmd) {
    $con = mysqli_connect("localhost","user","password", "host");

    if ($cmd == "Option1") {
        $SearchSQL = "SELECT signature, firstname, birthdate FROM $table WHERE lower(signature) LIKE ?" . $max;

        if ($fetchData = $con->prepare($SearchSQL)) {
            $fetchData->bind_param("s", "%".$stringQuery."%");
            $fetchData->execute();
            $fetchData->bind_result($signature, $firstname, $birthdate);
            $rows = array();
        }
    } else if ($cmd == "Option2") {
        $searchSQL = "SELECT signature, firstname, birthdate FROM $table WHERE birthdate = ?" . $max;

        if ($fetchData = $con->prepare($searchSQL)) {
            $fetchData->bind_param(":birthdate", $stringQuery);
            $fetchData->execute();
            $fetchData->bind_result($signature, $firstname, $birthdate);
            $rows = array();
        }
    }

    while ($fetchData->fetch()) {
        $row = array(
            'signature' => $signature,
            'firstname' => $firstname,
            'birthdate' => $birthdate,
            );
            $rows[] = $row;
    }
    return $rows;
} else {                   // <-- This else doesn't have an if
    print_r($con->error);  // <-- This else doesn't have an if
}                          // <-- This else doesn't have an if
}

Bu neden oluyor ben ciddi anlayamıyorum. Bloklar kendine yer olmalıdır, hem kapalı, ve sonra wile gitmeli, ve her ikisi de yalnızca bir şey fishz weihg if?

4 Cevap

Yere fazladan bir ayraç yoktur ... Eğer kodunuzu girinti Eğer düzgün, her bölümü kapalı değil ki göreceksiniz ...

Sen önce if($con) eklemeniz gerekir ediyorum ilk if:

function QueryPeople($stringQuery, $table, $max, $cmd) {
    $con = mysqli_connect("localhost","user","password", "host");

    if($con){
    	if ($cmd == "Option1") {

    		$SearchSQL = "SELECT signature, firstname, birthdate FROM $table WHERE lower(signature) LIKE ?" . $max;

    		if ($fetchData = $con->prepare($SearchSQL)) {
    			$fetchData->bind_param("s", "%".$stringQuery."%");
    			$fetchData->execute();
    			$fetchData->bind_result($signature, $firstname, $birthdate);
    			$rows = array();
    		} 
    	} else if ($cmd == "Option2") {

    		$searchSQL = "SELECT signature, firstname, birthdate FROM $table WHERE birthdate = ?" . $max;

    		if ($fetchData = $con->prepare($searchSQL)) {
    			$fetchData->bind_param(":birthdate", $stringQuery);
    			$fetchData->execute();
    			$fetchData->bind_result($signature, $firstname, $birthdate);
    			$rows = array();
    		} 

    	} 

    	while ($fetchData->fetch()) {
    		$row = array(
    		'signature' => $signature,
    		'firstname' => $firstname,
    		'birthdate' => $birthdate,
    		);
    		$rows[] = $row;
    	}
    	return $rows;
    } else {
    	print_r($con->error);
    }
}

Her neyse, ben bunun için mysql_error gerekir ... $ con-> hata her şeyi gösterecektir sanmıyorum.

Kod yanlış. Tidily kodunuzu düzenleyin. Sen bir if deyimi cevapsız.

<?php
function QueryPeople($stringQuery, $table, $max, $cmd) {
  //

if ($cmd == "Option1") {

  //

    if ($fetchData = $con->prepare($SearchSQL)) {
     /**/
    } 

} else if ($cmd == "Option2") {

    //
    if ($fetchData = $con->prepare($searchSQL)) {
    	/**/
    } 

} 
    while ($fetchData->fetch()) {
    	/**/
   }
      return $rows;
    } else {		//<- WHAT else?
    	print_r($con->error);
   }
}

Siz} çift var .. aşağıya bakın

        $rows = array();
 } 
 } else if ($cmd == "Option2")

bunu değiştirin

        $rows = array();

 } else if ($cmd == "Option2")

UPDATE ..

ayy yanlış

aslında eklemek unuttum

if($con) {

Başka son işlevin dışında gibi parantez:

function funcName() {
   // function body...
} else {
   // this is where your else is
}

Sen, kaynak vurgulamaktadır bir IDE kullanmak da her ayraç üzerine imleci ve eşleşen kuşak göreceksiniz gerekir.