Hazırlamak mysqli bir dizi bağlamak için bir yolu var mı [çoğaltmak]

3 Cevap php

Ben değişkenlerin herhangi bir miktar ile saklanan prosedürleri bir dizi birini idam edecek bir sınıf yapmaya çalışıyorum

Php ve mysqli kullanarak Im

  • Benim sınıf bir dizi sıralar ve elemanlarının sayısına göre bir dize oluşturur varsa
  • Böyle bir şey vererek CALL spTestLogin(?,?), örneğin
  • Ben şimdi böyle birşey kullanarak benim diziden giriş bağlamak gerekiyor:

    $ Deyim-> bind_param ($ this-> paramTypes, $ this-> paramValues) ;/ / paramValues ​​benim dizidir

Eğer inşaat Sonra benim sonuçlar alıyorum üzerinde çalışabilirsiniz

Herhangi bir fikir

3 Cevap

mysqli_stmt::bind_param() bağımsız değişken bir dizi alacak

, Gibi bir şey yapabileceğini ('i', 'b', 's', 'd' biri) $this->paramTypes, aynı zamanda her bir değişken için doğru tip karakteri tutan bir dizidir varsayarsak

$params = $this->paramValues;
array_unshift($params, implode($this->paramTypes));
call_user_func_array( array( $stmt, 'bind_param' ), $params);

Esasen size normal) (bind_param geçmek, ve sonra kullanarak arama yapmak call_user_func_array() olur parametreleri bir dizi oluşturmak

Bunu yapmanın çok daha iyi bir yolu olabilir

Edit: sadece bu yazarken ben buna dövüldü fark, ben ilgi durumunda şimdi burada bu cevabı bırakacağım

Böyle bir şey yapmak zorunda:

$params=array_merge(
    array($this->paramTypes), 
    $this->paramValues
);
call_user_func_array(array($stmt, 'bind_param'), $params);

değilse, ilk önce bu string parametresini oluşturmak zorunda - $this->paramTypes ile mysqli_stmt::bind_param istenen formatta bir dize olduğunu verilmiştir.

out veya inout parametreleri bu durumda çalışmıyor eğer ben bilmiyorum.