0

例私はこのような配列を持っています:

Array
(
    [0] => 2010140419
    [1] => 2010140420
    [2] => 20101140421
)

そして、次のようなコードを作成します。

public function check_siswa($noInduk) {
        $cnoInduk = count($noInduk);
        for($i = 0; $i < $cnoInduk; $i++) {
            $sql = "SELECT no_induk FROM siswa WHERE no_induk = :noInduk";
            $q = $this->db->conn_id->prepare($sql);
            $q->bindParam(':noInduk', $noInduk[$i], PDO::PARAM_INT);
            $q->execute();
        }

        $q->rowCount();
        $result = $q->fetchColumn();
        print_r($result);
        exit();
    }

上記のコードから、結果として次のようになります。

2010140420

そして、私はこのようなデータベースを持っています:

SELECT no_induk from siswa;
  no_induk  
------------
 2010140419
 2010140420

私の質問、結果エラー no_induk 2010140419 および 2010140420 を取得する方法は既に存在しますか?

4

1 に答える 1

0

関数を次のように変更します。

public function check_siswa($noInduk) {
    $cnoInduk = count($noInduk);

    // error to hold the keys that are duplicate
    $error = Array();
    for($i = 0; $i < $cnoInduk; $i++) {
        $sql = "SELECT no_induk FROM siswa WHERE no_induk = :noInduk";
        $q = $this->db->conn_id->prepare($sql);
        $q->bindParam(':noInduk', $noInduk[$i], PDO::PARAM_INT);
        $q->execute();
        if ($q->rowCount() > 0){
            // if the key already exists then add it to the 
            // error array
            $error[] = $noInduk[$i];
        }
   }
   // there are some keys that exist already
   if (!empty($error)){
       return $error;
   }
   // no duplicates return false
   else {
       return false;
   }
}

次に、関数呼び出しの場合:

if(($error = check_siswa($noInduk)) !== false){
    // there is an error
    echo "Keys exist already";
    var_dump ($error);
}
else {
    echo "No key exists already";
}
于 2013-08-06T04:53:08.003 に答える