2017-03-24 4 views
-3

Ich habe einen Fehler: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement auch wenn ich alle Parameter gezählt und gleich sind.PHP-Funktion, Fehler: Die Anzahl der Variablen stimmt nicht mit der Anzahl der Parameter in der vorbereiteten Anweisung

Die Funktion i für ausgewählte Abfrage aufrufen:

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

Code auf Sie für ein paar gescheitert Gründe dafür; 1) 'wo a.Phone_number = '?''

+1

Sie sollten (zurück) zu den" offiziellen "Handbüchern über vorbereitete Aussagen gehen; es ist alles drin. http://php.net/manual/en/mysqli.prepare.php –

+0

'User_depodit' das steht für einen weiteren Tippfehler. Sie haben eine Figur, die als 'User_deposit' gelesen werden sollte –

Antwort

0

ich irrte falsche Parameter zu binden, ich es schließlich wie folgt festgesetzt:

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; 
    } 
} 
Verwandte Themen