2013-07-05 171 views
0

我有一个输入字段,用户可以在1-22之间指定一个数字。现在让我们说他们进入14.然后我想插入14行。什么是最好的方法来做到这一点?无论是SQL还是PHP。用SQL/PHP插入多行

$current_number_of_ranks = 7; 
$number_of_ranks = 14; 

INSERT INTO ranks (c_id, name) VALUES (67, '(new rank)') 

编辑:另外,可以说,那里有目前7行与C_ID 67,他们进入数字9。我只想插入2行。

编辑:这只是一个例子。除了搞清楚如何插入多行外,我得到了一切工作。我需要帮助的是如何插入多行。

+1

他们会插入14行?什么?随机数据?还是你要问用户他想插入什么? – jsedano

+0

然后,您还需要选择事先插入来知道该给定ID已存在多少行。 – Prix

+0

我已经这样做了。这只是一个例子。 – PopeyeDoyle

回答

0

有了,你有一个很好的理由随​​机插入的假设..

您可以在查询放入一个循环

$number_of_ranks = 14; 
for ($i=0; $i<$number_of_ranks; $i++) { 
    mysqli_query("INSERT INTO ranks (c_id, name) VALUES (67, '(new rank)')"); 
    //use normal db class if you have written one of course 
} 
+1

这不是实现它的最佳方式。由于性能的原因,在循环中执行任何类型的查询通常都会被忽视。 –

2

你应该使用MySQL多重插入:

$number_of_ranks = 14; 

$value = implode(',', array_fill(0, $number_of_ranks, "(67, '(new rank)')")); 
$query = 'INSERT INTO ranks (c_id, name) VALUES ' . $value; 
// then execute the query 

$query的结果将为:

"INSERT INTO ranks (c_id, name) VALUES (67, '(new rank)'),(67, '(new rank)'),(67, '(new rank)'),(67, '(new rank)'),(67, '(new rank)'),(67, '(new rank)'),(67, '(new rank)'),(67, '(new rank)'),(67, '(new rank)'),(67, '(new rank)'),(67, '(new rank)'),(67, '(new rank)'),(67, '(new rank)'),(67, '(new rank)')"