问题如下:SQL的原始结构如下:
id     ids     date
 1      1        
 2      2
 3      3
 4      4
 5      5
如下是PHP语句,想将ids改成$arr里面的$arr = array('2','3','4','1','5');
用循环或者UPDATE CASE语句该怎么写呢?

解决方案 »

  1.   


    foreach ($arr as $_order => $_item) {
    _query("UPDATE user SET sid = {$_order}+1 WHERE id = {$_item}");
    }
    我自己试了一下这个第一次可行,改成 $arr = array('2','3','4','1','5');但是反过来改就改不了,改成$arr = array('1','3','4','2','5');请帮忙看看..谢谢
      

  2.   

    foreach( $arr as $_order => $item )
         mysql_query("UPDATE user SET sid = {$item} WHERE id = {$_order}");
    (⊙v⊙) 什么是反过来改不了?
      

  3.   

    不是很看得懂你说的是什么意思foreach ($array as $key=>$value){
    $id=$key+1;
    $SQL="UPDATE Table SET ids='".$value."' WHERE id='".$id."'";
    $Mysqli->query($SQL);
    }
      

  4.   

    foreach ($arr as $order => $item) {
        mysql _query("UPDATE user SET sid = $item WHERE id = {$order+1}");
     } 
      

  5.   

    测试了下,这种写法貌似是不对滴...foreach ($arr as $order => $item) {
       $id = $order +1;
        mysql _query("UPDATE user SET sid = $item WHERE id = $id");
     } 
      

  6.   

    你们试一下,反正我试了是不行的
    首先,数组里面原来的数据为:
    id sid
    1   1
    2   2将SID改变成数组里面的内容 $arr1 = array(2,1)中foreach ($arr1 as $_order => $_item) {
        mysql_query("UPDATE user SET sid = {$_order}+1 WHERE id = {$_item}");
    }用上面这个循环写入数据库,成功,数据库显示如下
    id sid
    1   2
    2   1
    但是再改回来呢?就是 $arr = array(1,2)呢? 你们看看能否成功? 我试了不行呢?
    数据库显示依旧是下面的:
    id sid
    1   2
    2   1
      

  7.   

    SQL的原始结构如下:
    id ids date
     1 1  
     2 2
     3 3
     4 4
     5 5ids sid?
      

  8.   

    Sorry,其实ids 与 sid都是一样的,笔误~~
      

  9.   

    我们贴的方法你试过么?$arr = array(1,3,4,2,5);
    foreach ($arr as $order => $item) {
       $id = $order +1;
        mysql _query("UPDATE user SET sid = $item WHERE id = $id");
     } 
      

  10.   

    改过去:
    $arr = array(1,3,4,2,5);
    foreach ($arr as $order => $item) {
       $id = $order +1;
        mysql _query("UPDATE user SET sid = $item WHERE id = $id");
     } 改回来:
    $arr = array(2,1,3,4,5);
    foreach ($arr as $order => $item) {
       $id = $order +1;
        mysql _query("UPDATE user SET sid = $item WHERE id = $id");
     } 改回来依旧改不回来?把你改不回来的代码贴出来看看。
      

  11.   

    我把全部代码写出来吧~~
    我知道问题的所在了,为传过来的值的问题,但是依旧解决不了,你写的那段程式没有问题整个程式如下://$arr为从input框里提取出来的
    $arr = $_POST['sid'];
    foreach ($arr as $order => $item) {
      $id = $order + 1;
      mysql_query("UPDATE user SET sid = $item WHERE id = $id");
    }$result = mysql_query("SELECT id, sid FROM user ORDER BY sid + 1");
    <form action="post" action="">
    <?php 
       $html = array();
       while (!!$rows = mysql_fetch_array($result)) {  
          $html['id'] = $rows['id'];
          $html['sid'] = $rows['sid'];
    ?>
      <td><?php echo $html['id']?></td><td><input type="text" name="sid[]" maxlength="2" value="<?php echo $html['sid']?>"/></td>
    <?php
      }
    ?>
    </form>
    //上面循环出来的HTML结果为id     sid (为INPUT框,可输入)
     1       1 
     2       2
     3       3
     4       4
     5       5
    当更改sid里面的值如下:id     sid
     1       2
     2       1
     3       3
     4       4
     5       5程式可以从数据库中读出HTML是正确的:
    id     sid
     1       2
     2       1
     3       3
     4       4
     5       5
    但当我再次将数据改为如下:
    id     sid
     1       1
     2       2
     3       3
     4       4
     5       5
    HTML界面显示的还是:id     sid
     1       2
     2       1
     3       3
     4       4
     5       5
    以上,不知道我有没有说清楚~~
      

  12.   

    是写在一个页面么,问题原因可能是你没有判断是否提交了表单就执行了$_POST取值,这样是空的...
    所以也就无法更新成功前面那段代码改为:<?php
    if(isset($_POST['id'])){
      $arr = $_POST['sid'];
      foreach ($arr as $order => $item) {
        $id = $order + 1;
        mysql_query("UPDATE user SET sid = $item WHERE id = $id");
      }
    }
    $result = mysql_query("SELECT id, sid FROM user ORDER BY sid + 1");
      

  13.   

    $arr = array(1 => '2', 2 => '3', 3 => '4', 4 => '1', 5 => '5');修改时,唯一键是不能少的
      

  14.   


    值我接收到了。$arr = $_POST['sid'];
    print_r($arr);都有值,不会是值没有传过来的原因,
      

  15.   

    sorry,以为这个帖子结了呢。问题的原因在于你的$id和$sid没有绑定。帮你改了下代码,你测试下:<?php
    if(isset($_POST['submit'])){
       $arr = $_POST['sid'];
       foreach ($arr as $order => $item) {
          mysql_query("UPDATE `user` SET sid = $item WHERE id = $order");
       }
    }
    $result = mysql_query("SELECT id, sid FROM `user` ORDER BY sid ASC");
    ?><form method="post" action="">
    <table>
    <?php 
       while ($rows = mysql_fetch_array($result)){
          $id = $rows['id'];
          $sid = $rows['sid'];
    ?><tr>
      <td><?php echo $id;?></td>
      <td><input type="text" name="sid[<?php echo $id;?>]" maxlength="2" value="<?php echo $sid;?>"/></td>
      </tr>
    <?php
      }
    ?>
    <tr><td><input type="submit" value="submit" name="submit"/></td></tr>
    </table>
    </form>
      

  16.   

    哥隔了几天上来一看 这帖还在,ohmygirl速度解决他的问题...