2017-03-24 12 views
-3

すべてのパラメータを数えても等しくても、エラー:mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statementに直面しています。PHPの関数、エラー:変数の数がプリペアドステートメントのパラメータの数と一致しません

私はselectクエリのために呼び出す機能:

public function User_depodit ($Phone_number) { 
    $stmt = $this->conn->prepare("SELECT a.Idcustomer_info as    idInfocustomer, a.Amount as currentamountCustInfo, b.Idcustomer_info as idInfocustomer2, b.IDcustomer , c.IDbank AS DepositIDbank, c.Amount as currentAmountDpsit, c.IDcustomer as IDcustomerDepodit,bnk.IDbank as bankIDbank, d.Card_Id as CardID_cardType ,   d.CardName , e.Amount as VisaAmount, e.Card_number as visaCardNumber, e.Exp_date  as VisaExpDate,e.Security_code as visaSecurityCod, e.Card_Id AS visaCardId from  customer_info a join customer b on a.Idcustomer_info = b.Idcustomer_info join  deposit c on b.IDcustomer =c.IDcustomer join bank bnk on c.IDbank = bnk.IDbank  join cardtype d on bnk.Card_Id= d.Card_Id join visa_info e on d.Card_Id = e.Card_Id where a.Phone_number ='?' ORDER BY a.Created_at DESC ,c.Created_at DESC ,e.Created_at DESC limit 1"); 
$stmt->bind_param("iiiiiiiiiiiiiii", $idInfocustomer, $currentamountCustInfo, $idInfocustomer2, $IDcustomer, $DepositIDbank, $currentAmountDpsit, $IDcustomerDepodit, $bankIDbank, $CardID_cardType, $CardName, $VisaAmount, $visaCardNumber, $VisaExpDate, $visaSecurityCod, $visaCardId); 
    if ($stmt->execute()) { 
     $user = $stmt->get_result()->fetch_assoc(); 
     $stmt->close(); 

      // return user's results 
      return $user;  
     } 
     else { 
     return NULL; 
    } 
} 
+2

あなたのコードは、いくつかのためにあなたに失敗しました理由; 1) 'どこa.Phone_number = '?''

+1

準備されたステートメントの「公式」マニュアルに戻るべきです。それはすべてそこにあります。 http://php.net/manual/en/mysqli.prepare.php –

+0

'User_depodit'は別のタイプミスです。あなたは 'User_deposit'として読まなければならない人物です –

答えて

0

次のように私は間違ったパラメータを結合するのに間違っていた、私は最終的にそれを固定:

public function UserDepodit ($Phone_number) { 

$stmt = $this->conn->prepare("SELECT 
         a.Idcustomer_info as idInfocustomer, 
         a.Amount as currentamountCustInfo, 
         b.Idcustomer_info as idInfocustomer2, 
         b.IDcustomer , 
         c.IDbank AS DepositIDbank, 
         c.Amount as currentAmountDpsit, 
         c.IDcustomer as IDcustomerDepodit, 
         bnk.IDbank as bankIDbank, 
         d.Card_Id as CardID_cardType , 
         d.CardName , 
         e.Amount as VisaAmount, 
         e.Card_number as visaCardNumber, 
         e.Exp_date as VisaExpDate, 
         e.Security_code as visaSecurityCod, 
         e.Card_Id AS visaCardId 

         from customer_info a 
         join customer b 
         on a.Idcustomer_info = b.Idcustomer_info 
         join deposit c 
         on b.IDcustomer = c.IDcustomer 
         join bank bnk 
         on c.IDbank = bnk.IDbank 
         join cardtype d 
         on bnk.Card_Id= d.Card_Id 
         join visa_info e 
         on d.Card_Id = e.Card_Id 

         where a.Phone_number = ? 
         ORDER BY a.Created_at DESC , 
         c.Created_at DESC , 
         e.Created_at DESC limit 1"); 


    $stmt->bind_param("i", $Phone_number); 


    if ($stmt->execute()) { 
     $user = $stmt->get_result()->fetch_assoc(); 
     $stmt->close(); 

      // return user's results 
      return $user; 


     } 
     else { 
     return NULL; 
    } 
} 
関連する問題