PHP的循环变量未分配
我有一个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>";
}
您没有提供足够的信息来回答你的问题,所以我要完全左外野你提供这样做的另一种方式,应该让你的问题已经过时了。
有很多事情你可以和应该在这里做不同。想象一下,您对数据库的查询是公交车,而每个查询都是公交车。最好是用更多的数据填满你的公交车,然后再乘坐公交车。
// 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;
}
欢迎来到SO。让我知道这是否适合你说@phpmeh并在这里发表评论。此外,如果它有效或有帮助,请投票回答并用勾号接受它。 – phpmeh 2012-02-03 21:09:26
这肯定帮了我。我在这方面是一个新手,并没有意识到有一个更好的方式来处理这些类型的查询。谢谢您的帮助! – user1188339 2012-02-03 22:46:22
投票并接受。我们在这里 – phpmeh 2012-02-04 01:20:41
你可以输出$ i当你做回声? – 2012-02-03 20:49:17
您是否对两个数据库连接使用相同的用户名/密码组合? – Crontab 2012-02-03 20:51:57