简体   繁体   English

通过一个mysql查询更新多行

[英]update multiple rows by one mysql query

i'm trying to update multiple rows by one mysql update query.this is my code.but it didn't work.it display error.i'm trying to update start and end field in mysql table 我试图通过一个mysql更新查询更新多行。这是我的代码。但它没有工作。显示错误。我试图更新mysql表中的开始和结束字段

$resname=$_POST['resname'];
$rw1start=$_POST['rw1start'];
$rw1end=$_POST['rw1end'];
$rw2start=$_POST['rw2start'];
$rw2end=$_POST['rw2end'];
$rw3start=$_POST['rw3start'];
$rw3end=$_POST['rw3end'];
$rw4start=$_POST['rw4start'];
$rw4end=$_POST['rw4end'];
$rw5start=$_POST['rw5start'];
$rw5end=$_POST['rw5end'];
$rw6start=$_POST['rw6start'];
$rw6end=$_POST['rw6end'];
$rw7start=$_POST['rw7start'];
$rw7end=$_POST['rw7end'];

    $sql="UPDATE opening 
            SET start = (case when day = 'Monday' then '$rw1start'
                             when day = 'Tuesday' then '$rw2start'
                             when day = 'Wednesday' then '$rw3start'
                              when day = 'Thursday' then '$rw4start'
                               when day = 'Friday' then '$rw5start'
                                when day = 'Saturday' then '$rw6start'
                                 when day = 'Sunday' then '$rw7start'
                        end),
            SET end = (case when day = 'Monday' then '$rw1end'
                             when day = 'Tuesday' then '$rw2end'
                             when day = 'Wednesday' then '$rw3end'
                              when day = 'Thursday' then '$rw4end'
                               when day = 'Friday' then '$rw5end'
                                when day = 'Saturday' then '$rw6end'
                                 when day = 'Sunday' then '$rw7end'
                        end)        


                    WHERE (day in 'Monday', 'Tuesday', 'Wednesday','Thursday','Friday','Saturday','Sunday') AND res_name='$resname'";

    $result=mysql_query($sql)or die ("Error");

开幕式

Your update command is not correct in addition you have column name end which is reserved. 您的更新命令不正确,此外您还有保留的列名end You need to backtick it. 你需要反击它。 You have used set 2 times but in update statement you need only once as 你已经使用了set 2次,但是在update语句中你只需要一次

update table set col1 = 'someval',col2='someval' 


$sql="UPDATE opening 
SET start = (
               case 
               when day = 'Monday' then '$rw1start'
               when day = 'Tuesday' then '$rw2start'
               when day = 'Wednesday' then '$rw3start'
               when day = 'Thursday' then '$rw4start'
               when day = 'Friday' then '$rw5start'
               when day = 'Saturday' then '$rw6start'
               when day = 'Sunday' then '$rw7start'
               end
             ),
     `end` = (
               case 
               when day = 'Monday' then '$rw1end'
               when day = 'Tuesday' then '$rw2end'
               when day = 'Wednesday' then '$rw3end'
               when day = 'Thursday' then '$rw4end'
               when day = 'Friday' then '$rw5end'
               when day = 'Saturday' then '$rw6end'
               when day = 'Sunday' then '$rw7end'
               end
             ) 
           WHERE day in ('Monday', 'Tuesday',  'Wednesday','Thursday','Friday','Saturday','Sunday') 
           AND res_name='$resname'";       

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM