我有一个相当大的INSERT语句像MySQL的转义字符串帮助
INSERT INTO multimedia (filename, regex, flag) VALUES (('adsfavr.jpg', '<div id="title">', 0), (...), (...));
如何准备查询MySQL.It的太长,做手工。它包含双引号,所以我不能使用php函数mysql_real_escape_string()
我有一个相当大的INSERT语句像MySQL的转义字符串帮助
INSERT INTO multimedia (filename, regex, flag) VALUES (('adsfavr.jpg', '<div id="title">', 0), (...), (...));
如何准备查询MySQL.It的太长,做手工。它包含双引号,所以我不能使用php函数mysql_real_escape_string()
为什么要插入所有记录与单个语句?您可以使用预准备语句: INSERT INTO multimedia(filename,regex,flag)VALUES(?,?,?);
和for循环逐一插入记录。
我不是一个PHP程序员,但代码看起来是这样的(从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();
}
使用事先准备好的声明中,仅DBMS编译SQL一次,因为它会与你的SQL语句。要确保插入全部记录或不记录(如果您仍然需要这样的断言),请使用事务。
此外,这也可以解决您的转义问题,因为您不需要将值放入字符串中。准备语句的字符串只定义SQL“模板”。
你可以试试这个方法在单个查询来执行多个插入...
$sql = "INSERT INTO users (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22)"; mysql_query($sql);
Hi PHP-Prabhu。我低估了这一点的原因是:1)这实际上是gAMBOOKa想要做的,但是被问及如何; 2)恕我直言,使用多个(...)表达式来动态插入多个记录是个不错的主意。 – chiccodoro 2010-05-11 14:27:59
如果储存在一个逗号分隔的文件数据,您可以使用LOAD DATA INFILE
查询
这方面的一个样本数据可以帮助。
你的问题是什么? – ant 2010-05-11 11:21:14
如果你可以使用mysql_real_escape_string,你的问题是什么?在查询中使用它们之前,应该对每个变量使用mysql_real_escape_string。 – 2010-05-11 11:22:03
查询是在一个逗号分隔的文件中,我不能使用mysql_real_escape_string因为正则表达式中的引号 – HyderA 2010-05-11 11:28:21