仅插入第一行

时间:2019-06-17 21:03:02

标签: php mysql

所以有一个简单的查询,该查询从数据库中返回一些结果,它返回4行,但是当我执行插入操作时,它只是在第一行然后停止,似乎并没有为那一行进行插入从第一个查询返回。

$sql = "SELECT t.ID AS 'TopicID', t.seminar_id AS 'SeminarID', rl.resourceid AS 'ResourceID', r.ResourceType AS 'ResourceType'
        FROM topic t
        LEFT JOIN resourcelink rl ON rl.entityid = t.ID
        LEFT JOIN resources r ON r.ResourceID = rl.resourceid
        WHERE t.seminar_id = '124840'";
$result = mysql_query($sql);

// echo "<pre>";
// print_r($sql);
// echo "</pre>";

while($row = mysql_fetch_assoc($result))
{
    $resourceID = $row['ResourceID'];
    $resourceType = $row['ResourceType'];

    if ($resourceID != '' && $resourceType != 1)
    {
        $sql_insert = "INSERT INTO resourcelink (resourceid, entityid, entitytype, linkorder, viewinplayer)
                VALUES ($resourceID, $topicID, 1, 0, 0)";
        $result = mysql_query($sql_insert);
    }
}

1 个答案:

答案 0 :(得分:1)

原因是您在第一次插入时会覆盖$result变量。因此,当while循环的下一次迭代调用mysql_fetch_assoc($result)时,它将获取INSERT的结果,而不是SELECT的结果。

由于您永远不会对INSERT的结果进行任何操作,因此无需分配变量。如果确实需要使用结果,则应使用其他变量名。所以改变:

        $result = mysql_query($sql_insert);

        mysql_query($sql_insert) or die("Insert error: " . mysql_error());