我有一个for循环,它将查询结果写入表中。我有一个变量($rID_s
),它是从查询中的值分配的。出于某种原因,它省略了第一次迭代。我有一个查询总行数的变量,它分配正确的数字。我已经尝试设置$i = 0
和$i = 1
,但它仍然省略了数组的第一次迭代。如果$i
设置为0
,则会向表中添加null
条记录。
如下所示,$ 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 :(得分: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;
}