2015-04-01 70 views
1

如果在「d1」中選擇了該日期,該php應該插入「d2」。它在「d1」中爲每行插入約30次。我一直使用而且從未遇到過這個問題,爲什麼會出現這種情況?插入約30次MYSQL

$query = mysqli_query($connection, 'SELECT * FROM '.$SETTINGS["d1"]);  
while($query_array = mysqli_fetch_array($query)){ 
    $connection_main = mysqli_connect($SETTINGS["hostname"], $SETTINGS["mysql_user"], $SETTINGS["mysql_pass"], 'u_db_main_'.$query_array['id']); 
    $dayofweek = strtolower(date('l')); 
    $query2 = mysqli_query($connection_main, 'SELECT * FROM '.$SETTINGS_MAIN["d1"].' WHERE '.$dayofweek.' ="1"'); 
    while($query2_array = mysqli_fetch_array($query2)){ 
     mysqli_query($connection_main, "INSERT INTO ".$SETTINGS_MAIN["d2"]." (c1) VALUE ('".$query2_array['data_1']."')"); 
     $id = mysqli_insert_id($connection_main); 
     calc_function($id); 
    } 
} 

功能calc_function有它無插但會使用一個全球性的,以獲得相同的變量,莫非是回顧插入?

function calc_function($id){ 
    global $connection_main; 
    global $SETTINGS_MAIN; 
    //rest of function below 

我一直在這工作了一個星期,並測試了一切!任何幫助,將不勝感激!

+0

你爲什麼把'mysqli_connect'放在'while'裏面? '$ connection_main'和'$ connection'連接到不同的數據庫嗎? 'calc_function'的其餘部分在哪裏? – Jarod 2015-04-01 16:49:15

+0

'$ connection_main'有一個變量,它用於從'u_db_main _'初始時使用$ query_array ['id']'。 'calc_function'的其餘部分與這個問題沒有任何關係,並且沒有插入內容。 – 2015-04-01 16:59:43

+1

**警告**:使用'mysqli'時,您應該使用參數化查詢和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)添加用戶數據到您的查詢。 **不要**使用字符串插值來實現此目的,因爲您將創建嚴重的[SQL注入漏洞](http://bobby-tables.com/)。 – tadman 2015-04-01 17:26:23

回答

0

你的問題是,你正在嘗試使用相同的連接資源來填充和插入。只要您在該連接上運行另一個查詢,您將失去先前的結果。使用mysqli_fetch_all()從$ query2獲取所有結果,然後遍歷數組並運行插入查詢。