php
  • mysql
  • codeigniter
  • 2010-10-21 59 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)。

    相關問題