2012-02-03 95 views
1

我有一個for循環,將查詢結果寫入表中。我有一個從查詢中的值分配的變量($rID_s)。出於某種原因,它省略了第一次迭代。我有一個查詢的總行的變量,它分配正確的數字。我試過設置$i = 0$i = 1,它仍然省略了數組的第一次迭代。如果$i設置爲0,則會向表中添加null記錄。PHP的循環變量未分配

請參閱下面的內容,$ rID_s的值是在循環的第一次迭代中未分配的變量。在此先感謝:

for ($i=1; $i <= $totalRows_rsClassReg; $i++) { 

     $row = mysql_fetch_array($rsClassReg); 
     $rID_s = $row['class_registry_student_ID_fk']; 

     mysql_select_db($database_SCOPE_test, $SCOPE_test); 
     $sql_aInstance = sprintf("INSERT INTO assignment_registry (assignment_reg_assignment_ID_fk, assignment_reg_student_ID_fk) VALUES (%s, %s)", 
        GetSQLValueString($aID, "int"), 
        GetSQLValueString($rID_s, "int")); 
     $Insert_aInstance = mysql_query($sql_aInstance, $SCOPE_test) or die(mysql_error()); 
     echo $row['class_registry_student_ID_fk'] . " - "; 
     echo "Instanced"; 
     echo "</br>"; 
    } 
+0

你可以輸出$ i當你做回聲? – 2012-02-03 20:49:17

+0

您是否對兩個數據庫連接使用相同的用戶名/密碼組合? – Crontab 2012-02-03 20:51:57

回答

1

您沒有提供足夠的信息來回答你的問題,所以我要完全左外野你提供這樣做的另一種方式,應該讓你的問題已經過時了。

有很多事情你可以和應該在這裏做不同。想象一下,您對數據庫的查詢是公交車,而每個查詢都是公交車。最好是用更多的數據填滿你的公交車,然後再乘坐公交車。

// do this up here 
mysql_select_db($database_SCOPE_test, $SCOPE_test); 

if(! empty($oneDimensionalArrayOfIds)){ 
    $query = " SELECT `col` FROM `table` WHERE (". implode('AND', $oneDimensionalArrayOfIds) .") "; // the 1-D array is getting your r_IDs or whatever 
    $rsClassReg = sqlarr($query); 
    if(! empty($rsClassReg)){ 
     $sqlInserts = NULL; 
     foreach($rsClassReg as $r){ 
      $sqlInserts[] = sprintf("INSERT INTO assignment_registry (assignment_reg_assignment_ID_fk, assignment_reg_student_ID_fk) VALUES (%s, %s)", GetSQLValueString($aID, "int"), GetSQLValueString($rID_s, "int")); 
      // not sure where you are getting AIDs from (africa? har har)... 
     } 
     if(! empty($sqlInserts)){ 
      sqlquery(implode("; ", $sqlInserts)); 
     } 
    } 
} 

這是一個免費贈品 - 很久以前,我曾經使用過這些功能。現在,我使用自定義查詢製造商和PDO,爲自己節省了大量工作。在這裏你去...

function sqlarr($sql, $numass=MYSQL_BOTH) { 
    // MYSQL_NUM MYSQL_ASSOC MYSQL_BOTH 
    $got = array(); 
    $result=mysql_query($sql) or die("$sql: " . mysql_error());        

    if(mysql_num_rows($result) == 0) 
     return $got; 
    mysql_data_seek($result, 0); 
    while ($row = mysql_fetch_array($result, $numass)) { 
     array_push($got, $row); 
    } 
    return $got; 
} 

// Sql fetch assoc 
function sqlassoc($sql){ 
    $query = mysql_query($sql) or die("$sql:". mysql_error()); 
    $row = mysql_fetch_assoc($query); 
    return $row; 
} 

function sqlrow($sql){ 
    $query = mysql_query($sql) or die("$sql:". mysql_error()); 
    $row = mysql_fetch_row($query); 
    return $row; 
} 

function sqlquery($sql){ 
    $query = mysql_query($sql) or die("$sql:". mysql_error()); 
    return $row; 
} 
+0

歡迎來到SO。讓我知道這是否適合你說@phpmeh並在這裏發表評論。此外,如果它有效或有幫助,請投票回答並用勾號接受它。 – phpmeh 2012-02-03 21:09:26

+0

這肯定幫了我。我在這方面是一個新手,並沒有意識到有一個更好的方式來處理這些類型的查詢。謝謝您的幫助! – user1188339 2012-02-03 22:46:22

+0

投票並接受。我們在這裏 – phpmeh 2012-02-04 01:20:41