如何多次插入结果集?

时间:2012-11-20 11:36:49

标签: php mysql for-loop while-loop

我正在尝试将员工ID(Emp_ID)输入schedule表30次。员工ID正从employee表中提取。它将在第一个循环上工作,但然后在第二个循环中断开。我得到的错误是

  

“致命错误:在第110行的C:\ wamp \ www \ server \ roster \ dates.php中的非对象上调用成员函数fetch_assoc()”

第110行是while循环。我只能假设这种情况正在发生,因为结果集正在被清空,但我不确定如何修复它。

<?php
//Select all of the current Employees by ID number
$sql = ("SELECT Emp_ID FROM employee");

//Run a check on the query to make sure it worked.
//if it failed then print the error.
if(!$result = $mysqli->query($sql))
{
die('There was an error getting the Emp_ID from the employee table [' . $mysqli->error . ']');
}

//Loop through the results...
while($row = $result->fetch_assoc())
    {
    //...and for each employee ID, enter it into the table 30 times.
    for($i = 1; $i <= 30; $i++ )
        {
        $sql = ("INSERT INTO schedule (Emp_ID) VALUES ('" . $row['Emp_ID'] . "')");

            //Run a check on the query to make sure it worked.
            //if it failed then print the error.
            if(!$result = $mysqli->query($sql))
            {
            die('There was an error inserting the Emp_ID into the schedule [' . $mysqli->error . ']');
            }
        }       
    }
?>

3 个答案:

答案 0 :(得分:3)

$result已在while循环中使用,您不能在循环中使用相同的名称来覆盖$result的当前值

$result更改为其他变量名称$result_insert(我的意思是在插入查询之后)

if(!$result_insert = $mysqli->query($sql))

答案 1 :(得分:1)

您正在覆盖$ result变量。在while循环中使用不同的变量名。

答案 2 :(得分:0)

在if条件中,您正在使用相同的$ result变量,该变量将其类型更改为非对象。将其名称改为别的。