PHP / MySQL Çoklu Veri Tabloları?

3 Cevap php

Asp.net olarak, veritabanına tek bir çağrı BİRDEN datatables alabilirsiniz. Eğer php aynı şeyi yapabilir miyim?

Örnek:

$sql ="select * from t1; select * from t2;";
$result = SomeQueryFunc($sql);
print_r($result[0]); // dump results for t1
print_r($result[1]); // dump results for t2

Eğer böyle bir şey yapabilir miyim?

3 Cevap

Bu, "çok-sorgu" olarak adlandırılır. PHP mysql uzantısı multi-sorgu etkinleştirmek için herhangi bir araç yoktur. Mysqli uzantısı sadece multi_query () yöntemi aracılığıyla, çoklu sorgusu kullanmak için izin vermiyor. Bkz http://php.net/manual/en/mysqli.multi-query.php

SQL enjeksiyon saldırıları nedeniyle potansiyel zararı artırabilir çünkü çok sorgusu kullanarak, tavsiye edilmez. Çoklu sorgu kullanıyorsanız, SQL enjeksiyon açığı önlemek için titiz kod incelemesi alışkanlıkları kullanmalısınız.

Eğer klasik MySQL kullanarak ediyorsanız, bunu yapamazsınız. Sen gibi görünecek bir fonksiyon yaratalım

function SomeQueryFunc($queries) {
    $queries = explode(';', $queries);
    $return = array();
    foreach($queries as $index => $query) {
        $result = mysql_query($query);
        $return[$index] = array();
        while($row = mysql_fetch_assoc($result)) {
           foreach($row as $column => $value) {
              $return[$index][$column] = $value;
           }
        }
    }
    return $return;
}

hangi beklendiği gibi çalışacaktır