我有一个关于如何实现我的使用case.I有一组我想在数据库中插入阵列的查询,但现在我很困惑如何我能做到这一点efficiently.I正在使用PHP和MySQL。下面是用例:
$shareUrl = array();
$theInsertUrl = array();
$authKeyArray = array();
以上是加工一些information.Now我必须将它插入到数据库后,我得到的阵列,但不是一个一个地去做,我认为有一个单插入将是更好的解决方案(如果不是请更正)。
对于多重插入我的SQL查询的values
部分必须
($shareUrl[0],$theInsertUrl[0],$authKeyArray[0]),($shareUrl[1],$theInsertUrl[1],$authKeyArray[1]),...
我想编写一个for循环,并创建一个多维数组这样
for($i=0;$i<count_of_array;$i++){
$multiArray[$i]['shareUrl'] = $shareUrl[0];
$multiArray[$i]['theInsertUrl'] = $theInsertUrl[0];
$multiArray[$i]['authKeyArray'] = $authKeyArray[0];
}
但它仍然将是乏味的使用这在SQL查询的values
部分,因为它接受这样的格式,如('val1','val2'),('val1','val2')
。我需要关于如何去实施它的建议?上述方法是否正确或有更好的解决方案或我应该使用单插入语句吗?
一个忠告是:不要试图太早优化。无论如何,多行单插入的确速度更快 - 当你有很多行时。如果你每天只需插入数十行数据,你就不需要*来优化它,如果我们谈论的是成千上万的数据,你会注意到优化。基本上,您可以节省每个查询与主键生成时间之间的请求时间。 为了帮助您获得更多信息,您是使用纯粹的'mysql_'函数,'mysqli'还是'PDO'? 有些数字也有帮助,比如阵列有多大。 – aleation
我正在使用'mysqli'功能!其实我正在做一个文件共享应用程序。因此,可以同时插入很多插件!最初虽然数量不会很大,但随着我的进步,它会快速增长! – KillABug
对不起,我不熟悉'mysqli',从mysql跳到PDO,我不确定'mysqli'是否已经命名参数绑定,据我所知可以按顺序使用问号'?',但不是:像PDO中的value1。所以我不确定在实现上,更好的让一个更有经验的'mysqli'来回答你。顺便说一句,你应该使用'mysqli'中的准备语句,或者你并不是真的注入安全 – aleation