我在php循环中有个update更新数据字段的sql
语句为 update Table1 set one="中国",two="1000" where id="34"
一个循环下来,有时会有一个条记录只更新了two这个字段,one这个字段没有更新,有知道什么问题的牛人,指点下这是为什么?

解决方案 »

  1.   

    你的where id="34" 是不是只有一条数据呢???所以你更新不到.
      

  2.   

    不是的,这个id是循环里给的,奇怪的是一条记录two这个字段更新了,one这个没有更新,
      

  3.   

    最好是说详细一些,update肯定是没有问题了
      

  4.   

    例如
    table1表
    id one two
    34 上海 021
    35 北京 010
    update table1 set one='西安',two='029' where id=34
    在php 中执行后数据为
    table1
    id one two
    34 上海 029
    35 北京 010
    就是上海没有改为西安,021改为029
      

  5.   

    直接在查询分析器里,执行一切正常,在PHP里就有时候会更新不全
      

  6.   

    我在我的环境下试了,没有问题
    <?php
    $conn = mysql_connect('localhost','root','admin');
    $dbname = mysql_select_db('hello',$conn) or die("cannot connect mysql");
    $sql = "update product_sort_zh set name='a', pid=1 where id=1";
    $query = mysql_query($sql,$conn);
    mysql_close($conn);
    ?>
      

  7.   

    是循环更新,可能我说的不够清楚
    再举个例子:
    table表中有10000条记录
    我查询该表,其中有3000条记录是符合条件(条件不唯一,不能用一条update语句执行)
    我要把表中两个字段修改,结果循环完了就发现,有几个记录只修改一个字段,另一个字段的值全部修改了
    问题是一条sql语句更新下来,为什么其中一个字段没有更新,不是全部,是个别
    id  name  num 
    34  上海   100
    35  北京   200
    上面两条记录都符合条件我要把它们修改
    update table set  name='西安',num=0 where id=".tid."
    tid在循环中赋值34,35
    更新完了数据时
    id  name  num
    34  西安   0
    35  北京   0
    试过把汉字改为字母,数字,都会出现这样的问题
      

  8.   

    说了你要写log再检查,一般来说是你循环里生成的sql有问题,
    写了log就可以看到那句到底是什么,如果真的你的sql没错,而没有全部更新的话, 你就可以向mysql报告bug了.....
      

  9.   

    首先你要努力的想办法进行profile,或者将mysql 执行语句写入日志。然后再用客户端去执行。随便我猜猜理由。
    写不进行,有可能你字段的类型设置有问题,例如字符型的,结果你设置成了int型了,碰到字符自然写不进去了。
    再者就是考虑一下编码问题。不用急,慢慢来,有调试的办法,就一定能搞定。
      

  10.   

    循环把 sql 语句 echo 出来,看看哪条有问题,把放到 phpmyadmin 里执行一上就知了
      

  11.   

    不要只要看SQL语句,需要与数据结构结合来查问题的。