Ben stackoverflow uzun bir çalışan fan, ilk kez posteri değilim. Birisi bana bu konuda yardımcı olabilir görmek isterdim. Sonra benim sorunu anlatacağım, bana biraz kod ile kazmak sağlar. Ben şu sarıcı sınıfları var:
class mysqli_wrapper
{
private static $mysqli_obj;
function __construct() // Recycles the mysqli object
{
if (!isset(self::$mysqli_obj))
{
self::$mysqli_obj = new mysqli(MYSQL_SERVER, MYSQL_USER, MYSQL_PASS, MYSQL_DBNAME);
}
}
function __call($method, $args)
{
return call_user_func_array(array(self::$mysqli_obj, $method), $args);
}
function __get($para)
{
return self::$mysqli_obj->$para;
}
function prepare($query) // Overloaded, returns statement wrapper
{
return new mysqli_stmt_wrapper(self::$mysqli_obj, $query);
}
}
class mysqli_stmt_wrapper
{
private $stmt_obj;
function __construct($link, $query)
{
$this->stmt_obj = mysqli_prepare($link, $query);
}
function __call($method, $args)
{
return call_user_func_array(array($this->stmt_obj, $method), $args);
}
function __get($para)
{
return $this->stmt_obj->$para;
}
// Other methods will be added here
}
Benim sorunum bind_result()
mysqli_stmt_wrapper
sınıfına çağırdığınızda, benim değişkenleri referans olarak kabul edilecek ve hiçbir şey geri alır görünmüyor olmasıdır. Ben bu kod bölümü çalıştırırsanız göstermek için, ben yalnızca NULL en olsun:
$mysqli = new mysqli_wrapper;
$stmt = $mysqli->prepare("SELECT cfg_key, cfg_value FROM config");
$stmt->execute();
$stmt->bind_result($cfg_key, $cfg_value);
while ($stmt->fetch())
{
var_dump($cfg_key);
var_dump($cfg_value);
}
$stmt->close();
Ben de bana söyler PHP güzel bir hata alıyorum: PHP Warning: Parameter 1 to mysqli_stmt::bind_result() expected to be a reference, value given in test.php on line 48
Ben bind_param()
işlevi aşırı denedim, ama referans olarak bağımsız değişken bir numara almak için nasıl anlamaya olamaz. func_get_args()
ya da yardım için mümkün görünmüyor.
I $stmt->bind_result(&$cfg_key, &$cfg_value)
çalışması gerektiği gibi referans değişkenleri geçmek, ancak bu davranışı önerilmiyor ve daha hataları atar ise.
Herkes bu etrafında bazı fikirler var mı? Zaman ayırdığınız için çok teşekkür ederiz.