我正在运行一个查询,从一个表中选择一个id数组,这样我就可以用结果数据集中的数据更新另一个表。
//db query result
$query = "SELECT image_id FROM jos_jxgallery_images ORDER BY jos_jxgallery_images.image_id DESC LIMIT 25";
$query_execute = mysql_query($query);
mysql_close($db_config);
while ($items = mysql_fetch_array($query_execute)) {
echo $items['image_id'];
echo '<br/>';
}
我想我需要在while循环中执行此操作,我只需要在那里使用echo来查看items变量中的内容。这没问题。我认为要做的事情是在while循环中。我想用我的另一个表的实际更新SET查询替换'echoing'。有点像...
while ($items = mysql_fetch_array($query_execute)) {
$q = "UPDATE jx_gallery_images_ratings SET image_id ='".$items."";
mysql_query($q);
但新表没有数据。有没有更好的方式来写这个...甚至可能作为一个查询或什么?任何帮助表示赞赏。
编辑:我应该更好地解释一下。该表是空的,我可以继续使用从一个表到另一个表的插入只是为了获得id。然而,在那之后......在某种程度上它有点像'临时'表。但不是真的。无论我在我的SELECT查询中从第一个表创建的image_id的顺序是什么(还有其他行除了image_id之外的排序,例如'hits')...所以第二个表需要使用相同的顺序更新of image_id的。可能是用cron工作多次运行这几个小片段。所以,是的,我正在尝试使用第一个表的SELECT查询的顺序更新第二个表,并将id再次放在我的第二个表中,再次......根据第一个SELECT查询的顺序。答案 0 :(得分:4)
如果表格为空,则应进行插入。您可以在单个查询中执行此操作:
INSERT INTO jx_gallery_images_ratings (image_id)
SELECT image_id FROM jos_jxgallery_images ORDER BY jos_jxgallery_images.image_id DESC LIMIT 25
请注意,您可能不会真正需要ORDER BY,并且您可以通过删除LIMIT一次为所有图像执行此操作
答案 1 :(得分:3)
类似的东西:
UPDATE tbl_updateme SET row_to_update = (SELECT row_you_need from tbl_target WHERE tbl_updateme.comparison_row = tbl_target.comparison_row)
答案 2 :(得分:0)
INSERT INTO jx_gallery_images_ratings (image_id) (SELECT image_id FROM jos_jxgallery_images ORDER BY jos_jxgallery_images.image_id DESC LIMIT 25)
或
简单方法是创建触发器,在使用动态SQL选择后更新表