Php 使用结果多次更新循环查询语句

Php 使用结果多次更新循环查询语句,php,mysql,sql,while-loop,sql-update,Php,Mysql,Sql,While Loop,Sql Update,为了更新数据库,我使用了以下循环条件。我从select语句中获取多行。现在我想使用update语句将这些行存储在数据库中。在这种情况下,多个update语句会循环,因此我的数据库不会得到更新。我只想一次循环更新查询,并将select语句中的多行存储在数据库中。我猜这只是一个小错误,我无法识别错误的循环 这是我的密码: if($param['aktion'] == 'save-widget-news') { if(($param['news'])==4){ $s

为了更新数据库,我使用了以下循环条件。我从select语句中获取多行。现在我想使用update语句将这些行存储在数据库中。在这种情况下,多个update语句会循环,因此我的数据库不会得到更新。我只想一次循环更新查询,并将select语句中的多行存储在数据库中。我猜这只是一个小错误,我无法识别错误的循环

这是我的密码:

if($param['aktion'] == 'save-widget-news')
{

        if(($param['news'])==4){

        $sql=" SELECT DISTINCT ad_news_texte.headline, ad_news.datum_archiv,ad_news_texte.id
            FROM autodo.ad_news_texte
            INNER JOIN autodo.ad_news_oe ON ad_news_texte.news_id = ad_news_oe.id_ad_news
            INNER JOIN autodo.ad_news ON ad_news_oe.id_ad_news = ad_news.id
            WHERE ad_news.datum_archiv
            BETWEEN curdate( ) - INTERVAL DAYOFWEEK( curdate( ) ) +28
            DAY AND curdate( )";    
        }
            elseif(($param['news'])==6){

        $sql=" SELECT DISTINCT ad_news_texte.headline, ad_news.datum_archiv,ad_news_texte.id
            FROM autodo.ad_news_texte
            INNER JOIN autodo.ad_news_oe ON ad_news_texte.news_id = ad_news_oe.id_ad_news
            INNER JOIN autodo.ad_news ON ad_news_oe.id_ad_news = ad_news.id
            WHERE ad_news.datum_archiv
            BETWEEN curdate( ) - INTERVAL DAYOFWEEK( curdate( ) ) +42
            DAY AND curdate( )";

            }
            elseif(($param['news'])==10){

        $sql=" SELECT DISTINCT ad_news_texte.headline, ad_news.datum_archiv,ad_news_texte.id
            FROM autodo.ad_news_texte
            INNER JOIN autodo.ad_news_oe ON ad_news_texte.news_id = ad_news_oe.id_ad_news
            INNER JOIN autodo.ad_news ON ad_news_oe.id_ad_news = ad_news.id
            WHERE ad_news.datum_archiv
            BETWEEN curdate( ) - INTERVAL DAYOFWEEK( curdate( ) ) +70
            DAY AND curdate( )";

            }

            $sql_select=mysql_query($sql);  
            while ($row = mysql_fetch_assoc($sql_select)) {
            echo $update="UPDATE dashboard_widget_users w SET w.configuration='".mysql_real_escape_string(serialize($row['headline']))."' WHERE w.dsnr_yw_user =12 AND w.dsnr_dashboard_widget=2 ";
            $update_news=mysql_query($update, $myConnection);
            }
在firebug中,我在这里检查了它是如何循环和多次执行更新条件的,这是我不想要的:

UPDATE dashboard_widget_users w 
SET w.configuration='s:65:\"AutoDo! News: Neue Pflichtfelder für Neuwagen bei AutoScout24.de!\";' 
WHERE w.dsnr_yw_user =12 AND w.dsnr_dashboard_widget=2;

UPDATE dashboard_widget_users w 
SET w.configuration='s:65:\"New intercompany prices for delivery to Schmitz Cargobull Russia.\";' 
WHERE w.dsnr_yw_user =12 AND w.dsnr_dashboard_widget=2;

UPDATE dashboard_widget_users w 
SET w.configuration='s:22:\"AutoDo! startet durch.\";' 
WHERE w.dsnr_yw_user =12 AND w.dsnr_dashboard_widget=2;

select语句在任何条件下都会产生一条记录还是多条记录?-您有3个条件,即新闻为4、6和10-那么,每个条件中只会出现一条记录/结果吗?select语句每次都会产生多条记录。如果它将返回多个结果,那么您需要在DB中存储哪一条?第一条记录、最后一条记录或任何特定记录?由于您使用的是静态where条件,其中w.dsnr_yw_user=12和w.dsnr_dashboard_widget=2。请检查更新的问题更新语句是否多次执行并显示结果。正因为如此,我无法将其存储到数据库中。那么,您需要在数据库中保存哪一个呢?s:65:\AutoDo!新闻:。。。或s:65:\新的内部公司。。。或s:22:\AutoDo!。。。