所以有一个简单的查询,该查询从数据库中返回一些结果,它返回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);
}
}
答案 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());