$link = mysql_connect('localhost', 'root', 'passwd');
mysql_select_db('db', $link);
$result = mysql_query("UPDATE user SET email = '[email protected]' where username = 'aaaaaaa'");
if ($result === true) echo 'ok';
mysql_close($link);郁闷,数据库没有'aaaaaaa'照样输出OK!!
第一次发现

解决方案 »

  1.   

    看了一下:
    "mysql_query() 在执行成功时返回 TRUE,出错时返回 FALSE"估计虽然没有找到'aaaaaaa',但执行成功了,所以$result = true,输出就是数字‘1’
    因没有改动表mysql_affected_rows输出0
      

  2.   

    $query = "UPDATE product SET name = 'abc' WHERE commid =1 and rebate=5";
    echo "result:".mysql_query($query);//结果是1——返回1表示sql指令语法正确
    echo "<br>affected:".mysql_affected_rows();//结果是0——返回0表示没有满足commid =1 and rebate=5条件的记录,被修改的条数为0
      

  3.   

    先说一下,没有错误提示,运行后就echo两个值。一个是1,一个是0
    大家在手册上看的那个update,说是返回实际上被改变的行的数量,可是我没有改变也返回一个1。郁闷呀。。
    先谢谢 mistjin(小红点点不见了,看这里看这里) 的测试。
      

  4.   

    如果我有一条记录满足条件的话,那返回的$result也是1,只有一个result的情况下不是不能区分一条或者没有记录满足条件吗??
      

  5.   

    只能说你的手册有误--------------------------------------------------------------------------------
     函式:mysql_query() 
    --------------------------------------------------------------------------------
     
    MySQL 资料库函式库
    mysql_query
    送出一个 query 字串。语法: int mysql_query(string query, int [link_identifier]);传回值: 整数函式种类: 资料库功能
     
     
    内容说明 
    本函式送出 query 字串供 MySQL 做相关的处理或者执行。若没有指定 link_identifier 参数,则程式会自动寻找最近开启的 ID。当 query 查询字串是 UPDATE、INSERT 及 DELETE 时,传回的可能是 true 或者 false;查询的字串是 SELECT 则传回新的 ID 值。[email protected] (09-Feb-1999) 指出,当传回 false 时,并不是执行成功但无传回值,而是查询的字串有错误。
     
     
    参考 
    mysql_db_query()  mysql_select_db()  mysql_connect()  --------------------------------------------------------------------------------
     
      

  6.   

    老大你给的是php中的,这个我看过了。。
    mysql中的update中不是有这样子的说明吗?
    是我看错了吗??你之前回答的我也理解。。
    现在我的意思是说:
    如果我有一条记录满足条件的话,那返回的$result也是1,没有满足条件成功执行也是返回1,不能区分一条或者没有记录满足条件吗??
      

  7.   

    不错,在mysql中UPDATE返回实际上被改变的行的数量
    但是你是在php中测试,而非在mysql中测试的mysql 的 update 的返回结果已被php转换成mysql_affected_rows的返回结果了