php kullanarak bir dize sql sorgusu çalıştırmak [çoğaltmak]

5 Cevap php

Possible Duplicate:
execute sql query from sql file

i bir veritabanı 'masaüstü' den ihraç edilen bir dosya adında file.sql var. i php komut dosyalarını kullanarak yeni bir veritabanı 'laptop' bu eski veritabanını almak istiyorum. i fopen kullanarak file.sql açıldı ve bir dize adlandırılmış $ SQLdata için fread ve depolanmış tüm içeriği kullanarak tüm içeriğini okumak. nasıl ben bu değişkenin bütün sorgu yürütebilir?

5 Cevap

Bu durumun, ben değil, bir bütün olarak dökümü almak için mysql komut satırı yardımcı programını kullanabilirsiniz.

Örneğin, böyle bir şey yapmanız gerekir:

mysql --user=YOUR_LOGIN --password=YOUR_PASSWORD --host=localhost YOUR_NEW_DATABASE_NAME < your_dump.sql

Eğer sunucuya komut satırı erişimi yoksa, belki exec / shell_exec / ile bu çalıştırabilirsiniz ...


If you really cannot use the mysql command from the command-line (nor using exec or any equivalent), maybe you can try using
mysqli_multi_query ; as stated in the manual :

Executes one or multiple queries which are concatenated by a semicolon.

Prbably sizin dökümü dikkate alınarak sadece noktalı virgülle ayırarak birkaç sorguları içerir, bu gerçekten işe yarayabilir ...


Edit : as other people pointed out, what about reading the answers that have been given to your other questions ? For instance, there is some interesting stuff here : execute sql query from sql file

Bu cevaplar anlamıyorum bir şey varsa, sen, hoppefully, daha doğruluklarını almak için, onlara yorum gönderebilirsiniz.

Etkili (';' ile bölme gibi basit değil) tek sorgular bir liste halinde birden fazla sorguları içeren dize bölmek ve bunları ayrı ayrı çalıştırmak zorunda ya da basit bir kullanımı {[(1)] can } ki, bildiğim kadarıyla, doğal olarak kendi mysqli::multi_query() / mysqli_multi_query() yöntemi / fonksiyonu ile bir noktalı virgül ile bağlanarak birden sorguları destekler sadece MySQL PHP uzantısı .

Arada - MySQL komut satırı istemcisi kullanarak Pascal MARTIN önerildiği gibi bu sorunun en iyi çözüm olacaktır.

Ben bir şey eksik olabilir, ancak PHP böyle bir toplu-sorgu için tek bir işlevi yoktur. Yani, mysql komut satırı yardımcı programını kullanarak başka, sen ayrı tablolara file.sql bölmek ve onlara Öter ardına yürütmek zorunda olacak. Bunu yapmanın en kolay yolu, bu belli cercumstances altında başarısız olabileceğini işaret etmek isterim taşıyamazsınız, preg_split kullanmak olabilir.

Güncelleme: Tamam, ben sadece S. Gehrig'in cevabını öğrendim, orada is PHP böyle bir fonksiyon.

MySQL GUI Tools ne gerek gibi geliyor. Yedekleme ve geri yükleme veritabanları yapabilirsiniz Yöneticisi kullanarak. Ben senin dizüstü bilgisayarınıza DB hareketli beri bu önerdi.

Birisi sadece bir similar question sordu

Ve cevabım aynıdır:


<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = file_get_contents("file.sql");

/* execute multi query */
if (mysqli_multi_query($link, $query))
     echo "Success";
else ehco "Fail";
?>

Bu mysqli 'mysqli_multi_query' işlevini kullanarak birden fazla sorgu dizeleri kabul edebilir çünkü.

Umarım bu yardımcı olur.