MySQL Escape String Help
-
25-09-2019 - |
Вопрос
У меня довольно большая инструкция вставки что-то вроде
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);