PHP: tek mysql_query tablosunda birden fazla SQL sorguları

3 Cevap php

Yani mysql_query () kullanılarak yüklenmesi gereken bir SQL dökümü dosyası var. Ne yazık ki, onunla birden sorguları yürütmek mümkün değildir.

- Doğrudan SQL dosyasını yüklemek için - (- yardım mysql) yüklü> Bu mysql command-line client farz edilemez

-> Bu mysqli uzantısı yüklü olduğunu kabul edilemez

/* contents of dump.sql, including comments */
DELETE FROM t3 WHERE body = 'some text; with semicolons; scattered; throughout';
DELETE FROM t2 WHERE name = 'hello';
DELETE FROM t1 WHERE id = 1;

Dökümü içeriğin bazı değerlerin virgül içerdiğinden) altında çalışmaz (patlayabilir.

$sql = explode(';', file_get_contents('dump.sql'));
foreach ($sql as $key => $val) {
    mysql_query($val);
}

Döküm dosyasını değiştirmeden SQL yüklemek için en iyi yolu nedir?

3 Cevap

Occam'ın jilet tekrar vurur.

Yukarıdaki () fonksiyonu değerleri noktalı virgül vardır, çünkü işe değildi patlayabilir. Ancak, ne ben gerçekleştirmek için başarısız (ve söz) noktalı virgül her SQL dökümü dosyasında satırsonu preceed olmasıdır. Alas,

$sql = explode(";\n", file_get_contents('dump.sql'));
foreach ($sql as $key => $val) {
    mysql_query($val);
}

Ayrıca, yardım, Bill için teşekkürler.

Burada büyük bir sorun var. Diğer tablolara güvenmek ifadeleri olabilir. Sadece doğrusal körü körüne bunları yürütmek olamaz.