0

この関数の最後の else に予期しない T_ELSE があります。

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
}

なぜこれが起こっているのか、私には真剣に理解できません。両方の if ブロックは自己完結型である必要があり、両方が閉じられている必要があります。

4

4 に答える 4

1

どこかに余分なブラケットがあります...コードをインデントすると、すべてのセクションが適切に閉じられていないことがわかります...

if($con)最初の前に追加する必要があります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);
    }
}

とにかく、 $con->error は何も表示しないと思います...そのためにはmysql_errorが必要です。

于 2009-10-28T14:56:00.367 に答える
0

あなたは}の2倍を持っています..以下を参照してください

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

に変更します

        $rows = array();

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

アップデート ..

おっと、間違った

実際、あなたは追加するのを忘れていました

if($con) {
于 2009-10-28T14:55:18.637 に答える
0

あなたのコードは間違っています。コードを整然と整理します。if 文が抜けています。

<?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);
   }
}
于 2009-10-28T14:56:52.437 に答える
0

あなたの最後のelseは、次のような関数ブレースの外にあります:

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

ソースを強調表示する IDE を使用し、カーソルを各波括弧に順番に置くと、対応する波括弧が表示されます。

于 2009-10-28T15:08:36.077 に答える