我正在使用uploadify将图片上传到服务器。后端我正在使用PHP脚本。在PHP脚本中,除了复制到目标位置之外,我还在数据库中插入文件位置和其他一些细节。
问题: - 如果我上传了20个文件,PHP脚本将被调用20次,数据库插入语句将被调用20次以插入不同的图像。绝对调用数据库20次是这样做的低效方法。有没有什么方法可以保存文件名(和位置)并只调用一次插入语句(最后)一次插入所有20条记录?
感谢您的帮助
此致
基兰
答案 0 :(得分:1)
我建议的一种方法是通过mysqli
扩展名使用准备好的声明。引用主要优势:
使用准备的实际目的 sql中的语句是削减成本的 处理查询;不要分开 来自查询的数据。这就是它的存在 现在使用w / php,而不是它是怎么回事 旨在用于第一个 地点。使用SQL可以降低成本 执行多个类似的查询 使用准备好的声明 这样做会削减解析, 验证并且通常生成一个 所述查询的执行计划 面前。这就是他们跑得更快的原因 一个循环,而不是他们的IMMEDIATE查询 堂兄弟。
来源:http://us2.php.net/manual/en/mysqli.prepare.php#103730
举例说明如何利用这个:
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if ($stmt = $mysqli->prepare("INSERT INTO `images` (`location`, `size`, `othervalues`) VALUES(?, ?, ?)")) {
foreach($images as $image) {
// s = string value
// i = integer value
$stmt->bind_param("sis", $image['location'], $image['size'], $image['othervalues']);
$stmt->execute();
}
$stmt->close();
}
// Your prepared statement failed, handle the error
else {
}
$mysqli->close();
我建议您阅读mysqli::prepare和mysqli_stmt::bind_param,了解有关该过程如何运作的更多信息。我还建议您阅读prepared statements in the MySQL documentation。