Вопрос

У меня довольно большая инструкция вставки что-то вроде

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

Как я могу подготовить запрос для MySQL.IT слишком долго, чтобы сделать это вручную. Он включает в себя двойные кавычки, поэтому я не могу использовать функцию PHP MySQL_REAL_ESCAPE_STRING ()

Это было полезно?

Решение

Почему вы хотите вставить все записи одним оператором? Вы можете использовать подготовленную оператор: вставить в мультимедиа (имя файла, регеек, флаг) (?,?,?);

и для цикла для вставки записей один за другим.

Я не программист PHP, но код может выглядеть так (запчасти, взятые из http://php.net/manual/en/pdo.preposhed-statements.php.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();
}

Используя подготовленное утверждение, СУБД компилирует только SQL один раз, так как он будет с вашим оператором SQL. Чтобы убедиться, что все записи вставляются либо все, либо отсутствие (если вам нужна такое утверждение в любом случае), используйте транзакцию.

Кроме того, это также решит вашу проблему с вознаграждением, поскольку вам не нужно ставить значения в строку. Строка для подготовленного оператора определяет только SQL «Шаблон».

Другие советы

Если ваши данные хранятся в файле разделенного запятой, вы можете использовать LOAD DATA INFILE запрос

Образец этих данных может помочь.

Вы можете попробовать этот способ выполнить несколько вкладышей в одном запросе ...

$ SQL = "Вставить в пользователей (имя, возрастные) значения ('helen', 24), ('katrina', 21), ('Samia', 22)"; mysql_query ($ sql);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top