MySQL kaçış dize yardım

3 Cevap php

Ben gibi oldukça büyük bir ekleme deyimi bir şey var

INSERT INTO multimedia (filename, regex, flag) VALUES (('adsfavr.jpg', '<div id="title">', 0), (...), (...));

Nasıl elle yapmak MySQL.It 'nin çok uzun süre sorgu hazırlamak yok. O yüzden ben php fonksiyon mysql_real_escape_string () kullanın olamaz çift tırnak içerir

3 Cevap

Why do you want to insert all records with a single statement? You could use a prepared statement: INSERT INTO multimedia (filename, regex, flag) VALUES (?, ?, ?);

ve bir for döngüsü kayıtları tek tek eklemek için.

Ben bir PHP programcısı değilim, ama kod bu gibi görünebilir (alınan parçalar http://php.net/manual/en/pdo.prepared-statements.php):

$stmt = $dbh->prepare("INSERT INTO multimedia (filename, regex, flag) VALUES (:filename, :regex, :flag)");
$stmt->bindParam(':filename', $filename);
$stmt->bindParam(':regex', $regex);
$stmt->bindParam(':flag', $flag);

for ( $i = 1; $i <= ...; $i++) {
    $filename = ...
    $regex = ...
    $flag = ...

    $stmt->execute();
}

Hazırlanmış deyimi kullanarak, DBMS sadece SQL deyimi ile olduğu gibi, bir kez SQL derler. (Zaten böyle bir iddiayı gerekiyorsa) Tüm veya hiç ya kayıt takılı olduğundan emin almak için, bir işlem kullanın.

Eğer bir dize değerleri koymak gerekmez beri Ayrıca, bu da sizin kaçan sorunu çözmek olacaktır. Bir hazır deyimi için dize yalnızca SQL "şablon" tanımlar.

veriler virgülle ayrılmış dosyada saklanır varsa, LOAD DATA INFILE sorgu kullanabilirsiniz

Bu verilerin bir örnek yardımcı olabilir.

Tek bir sorguda birden ekler çalıştırmak için bu yolu deneyebilirsiniz ...

$sql = "INSERT INTO users (name, age)
  VALUES
  ('Helen', 24),
  ('Katrina', 21),
  ('Samia', 22)";

mysql_query( $sql);