2013-07-28 24 views
-5

我想在一條指令中輸入for循環生成的100行。 我正在使用下面,但它不工作。phpmyadmin中的多行條目用於循環

for($i=$roll_number_start; $i<=$roll_number_end; $i++) 
       { 
        $roll_number = $roll_number_format.$i; 
        $p_username = generatePassword(); 
        $p_password = generatePassword(); 
        $roll_array[] = " ('".$roll_number."',"."'".$student_class."',"."'".$class_section."',"."'".$batch_year."',"."'".$p_username."',"."'".$p_password."')"; 

       } 

       $insert_sql = "INSERT INTO student (roll_number, student_class, class_section, batch_year, p_username, p_password) VALUES".$roll_array; 

你可以建議我如何使用一條指令在mysql中插入。

回答

0

修改$roll_array[],使之成爲字符串如下:

$roll_string = ''; 
for($i=$roll_number_start; $i<=$roll_number_end; $i++) 
{ 
    $roll_number = $roll_number_format.$i; 
    $p_username = generatePassword(); 
    $p_password = generatePassword(); 
    $roll_string .= "('".$roll_number."',"."'".$student_class."',"."'".$class_section."',"."'".$batch_year."',"."'".$p_username."',"."'".$p_password."')," 
} 
$roll_string = substr($roll_string, 0, -1); 
$insert_sql = "INSERT INTO student (roll_number, student_class, class_section, batch_year, p_username, p_password) VALUES ".$roll_string; 
+0

其工作很好,謝謝,但你能告訴我你爲什麼採取$ roll_string ='';和$ roll_string之後的點。 – user2538155

+0

@ user2538155:首先,你必須聲明你的變量(所以把$ roll_string初始化爲一個空字符串;這樣你可以連接(點符號)其他字符串給它)。其次,在for循環之外,您必須刪除最後一個字符(「,」),否則它將不會是「sql正確命令」。 – DonCallisto

+0

親愛的時間 – user2538155

0

有兩種方式:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3); -- use 100 times 

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9).....; -- 100() here 
0

假設你的數組中包含的合式套值插入到數據庫中,您只需將數組中的每個項目連接到單個字符串。 implode做到這一點:

$roll_string = implode(',',$roll_array); 

所以,如果$roll_array包含:

[ 
    "('a','b','c')" 
    ,"('d','e','f')" 
    ,"('h','i','j')" 
] 

然後$roll_string現在將包含

"('a','b','c'),('d','e','f'),('h','i','j')" 

,你可以追加到查詢像這樣

$SQL = "INSERT INTO table_name(col1,col2,col3) 
VALUES $roll_string"