Ne zaman ve nasıl PHP (PDO) ile birden çok MySQL sorguları kullanmak için

5 Cevap php

Kod en aza indirmek için başka bir açıklamada birden fazla MySQL sorguları kullanmanın yararları nelerdir.

Nasıl, yürütmek almak ve PHP (ve tercihan PDO) kullanarak bir deyim gönderilen birden fazla MySQL sorgu sonuçlarını görüntülemek yok.

5 Cevap

Ne olursa olsun, kullanmakta olduğunuz veritabanı, bu bir deyim birden fazla sorguları koymak için daha verimli olabilir. Eğer ayrı ayrı sorguları gerçekleştirmek, (aynı makine üzerinde ise süreçler arasında ya da en azından,), dönüş, sorguda geçmek, (autheticating dahil) ona bir bağlantı olsun bir ağ üzerinden veritabanına çağrı yapmak zorunda resultset ve her sorgu için bağlantı bırakın.

Bağlantı havuzu kullanmak bile, yine de gerekli olandan daha ileri geri fazla istek geçiyoruz.

Eğer birine iki sorguları birleştirmek Yani, örneğin, size ikinci sorgu için ileri geri çağırarak ekstra tüm kaydettiniz. Eğer birleştirmek daha fazla sorgular, sonra, daha verimli uygulama olabilir.

Onlar başlattığınızda başka Örneğin, birçok uygulamalar (örneğin DropDownLists gibi) listeleri doldurmak. Bu sorguları bir dizi olabilir. Bir çağrıda hepsini Sahne başlatma süresini hızlandırabilir.

mysql_query () birden sorguları desteklemez. Ancak, bazı geçici çözümler vardır:

http://www.dev-explorer.com/articles/multiple-mysql-queries
http://php.net/function.mysql-query

Ben biraz araştırma gece yapıyor ve bu konuya tökezledi. Yukarıdaki cevapların hiçbiri bu basit soruna kalıcı bir çözüm sağlamak.

OO Yaklaşımı kullanarak, multi_query () yöntemi kullanılarak tek bir bağlantıda birden fazla sorgu ifadeleri gerçekleştirebilirsiniz.

$db_connection->multi_query($query);

Sorguları iyi biçimli ve noktalı virgülle ayrılmış olmalı ->;

The PHP manual SEÇ verileri işlemek için nasıl hakkında daha fazla bilgi için bkz:

Eğer oturum değişkenleri ve geçici tablolar ile çalışmak gerektiğinde aynı çağrı üzerine birden fazla sorguları özellikle yararlıdır:

select somecol, @somevar := group_concat( distinct somecol2 separator '|')
from sometbl
where
    somecol LIKE "fueh"
group by somecol;

select somecol2
from  sometbl
where
    somecol LIKE "nyan"
and
    vc_wp regexp concat( '(', @somevar, ')' )
order by somecol;

Burada şartlı birden fazla sorgu birleştiren ve bir kerede hepsini yürütme bir örnek:

$fruit = 'banana';
$myfavoritefruits = array('apple', 'banana', 'grapes');

// the initial query that will always be run
$sql = "INSERT INTO fruits ( name ) VALUES ( '{$fruit}' );";

// if the fruit is one of my favorite fruits, perform another query
if (in_array($fruit, $myfavoritefruits)) {
    $sql .= "INSERT INTO myfavoritefruits ( name ) VALUES ( '{$fruit}' );";
}

Sorgu şimdi okur:

INSERT INTO fruits ( name ) VALUES ( 'banana' );
INSERT INTO myfavoritefruites ( name ) VALUES ( 'banana' );

Şimdi, biz sadece yürütmek ve kesin:

$conn->query( $sql );
$conn = null;