php
  • mysql
  • codeigniter
  • 2010-10-21 63 views 0 likes 
    0

    我有一个问题,这个查询出于某些原因:更新MySQL的声明从笨

    $this->db->query("UPDATE schools SET name = '$name', pop = '$pop', details = '$details', numteachers = '$numteachers', recess = '$recess', equipment = '$equipment' WHERE id = '$schoolid'"); 
    echo $this->db->affected_rows(); 
    

    出于某种原因affected_rows打印0,但有与查询没有错误。当我查看数据库时,行ID没有受到影响。我逃避所有的这样的查询之前的输入:

    $name = mysql_real_escape_string($_POST["schoolname"]); 
    

    与所有的投入,与实际输入的例子查询看起来像在此之前它的执行:

    UPDATE schools SET name = 'Jefferson County Public School', pop = '2,345', details = 'Lorem Ipsum is simply dummy text of the and typesetting industry.', numteachers = '2 Te', recess = '40 mins', equipment = 'Gym, Climbing Frame, Goal Posts, Track' WHERE id = '1' 
    

    所有列都已经在行ID 1下填充,这只是新的数据。 id是一个int,主键和auto_incrementing。

    任何意见将有所帮助,谢谢!

    +0

    如果手动执行该查询会发生什么? – mway 2010-10-21 17:40:22

    +0

    嗯好主意,我试过了,在Mac上使用Sequel Pro,它说没有错误。但后来有0行受到影响。 – 2010-10-21 17:44:37

    +0

    您确定生成的查询实际上是生成的,还是只插入了一些数据?检查以确保您的ID实际上是要更新的行的ID ......它可以为空或0 – mway 2010-10-21 17:46:36

    回答

    2

    您确定生成的查询实际上是生成的,还是只插入了一些数据?请检查以确保您的ID实际上是您要更新的行的ID ...它可能为空或意外。

    ;)

    0

    不要返回受影响的行,看看是否有查询错误或不。如果要更新一个不存在的行,你会得到0。如果您更新现有行,但实际上并没有改变,你仍然会得到0

    返回$这个 - > DB->更新数据('表')来获得正确的布尔响应(或$ this-> db-> query(),如果你想继续编写冗长的SQL)。

    相关问题