Nasıl soyut mysqli PHP tablolarını olabilir?

3 Cevap php

Ben mysqli uzanan, veritabanı sorguları için kendi sınıfını kullanıyorum:

class iDatabase extends mysqli
{
	public  $errorMsg;
	private $totalQueries;
	private $stmt;

	public function __construct()
	{
		parent::__construct( 'localhost', 'asd', 'asd', 'asd' );

		if ( mysqli_connect_errno() )
		{
			$this->errorMsg = 'Could not connect to server.<br /><i>' . mysqli_connect_error() . '</i>.';
			return;
		}

		parent::query( 'SET NAMES utf8' );
	}

}

Ancak ben sorguları çalıştırırken sorun haline çalışan ve sonuçları geri alıyorum. Ben hazırlanmış deyimleri kullanıyorum ama değerler ve sonuçlar bağlı yolu beni karıştırıyor. Biraz araştırma sonra sorgu ve parametreleri kabul Bu fonksiyon ile geldi:

public function psQuery( $query, $params )
{
	$this->stmt = parent::prepare( $query );
	call_user_func_array( array($this->stmt,'bind_param'), $params );
	$this->stmt->execute();
}

Benim soru, geri bu sonuçları elde etmek için en iyi yolu nedir nedir? Ben deyimini kapatın, her satır getirme, sonra bind_result kullanmanız gerekir. Ben sadece her satır için ilişkilendirilebilir bir dizisini almak için tercih ediyorum - Mümkün mü?

3 Cevap

Ben Zend_Db_Adapter_Mysqli üzerinde çalıştı ve Zend_Db_Statement_Mysqli sınıfları biraz biz PDO uygun yapmak istedim çünkü, bu işe almak ve {[(3 )]} arayüzü. Çünkü MySQLi sonuç almak için değişkenleri bağlanacak yapmaya ısrar ediyor kafa karıştırıcı şekilde, oldukça zahmetli oldu, ve çeşitli PDOStatement tarafından desteklenen modları getir.

If you want to see the code in Zend_Db, pay special attention to the functions Zend_Db_Statement_Mysqli::_execute() and fetch(). Basically, the _execute() method binds an array of variable references using call_user_func_array(). The tricky part is that you have to initialize the array so the bind_result() function gets the references. Uh, that wasn't totally clear, so go take a look at the code.

Yoksa sadece PDO MySQL sürücüsünü kullanın. Ben senin yerinde olsam öyle yapardım.

Ben, Zend_Db uygulanmasına bakmak özellikle mysqli adapter, bunu nasıl yaptığınızı görmek istiyorum.

Bu size söylediklerini yapmak zorunda gibi görünüyor "Ben her satırı alıp, sonra bind_result kullanmanız gerekir, daha sonra ifadesi kapatın"

Ben kolay bir yol olduğunu düşünüyorum.