2014-06-07 44 views
0

球員我有一個大型數據庫,所以當我想完全更新我的一些列我有超時錯誤(我嘗試一些方法來增加超時和失敗)但我的問題是我想繞過這問題我想更新我的空列在某些表中。所以我想使用這個查詢代碼,但我有沒有錯誤的空白頁面可以告訴我什麼問題,或者如果可能請求請告訴我一個好方法。檢查列如果空然後做更新

$sql = 'SELECT topic_first_poster_avatar FROM ' . TOPICS_TABLE . ' WHERE topic_poster = ' . (int) $row['user_id'] . 'IF topic_first_poster_avatar = "" 
     SET topic_first_poster_avatar = \'' . $db->sql_escape($avatar_info); 
    $db->sql_query($sql); 
+0

不知道關於PHP,但爲什麼不只是'UPDATE topics_table SET top_first_poster_avatar = ... WHERE top_first_poster_avatar = '''? – plalx

+0

?!但是我們必須用user_id檢查每一行以導入正確的數據,否則所有空列將採取相同的信息 – user3718571

+0

@plalx爲什麼不把它作爲答案? –

回答

0

由於plalx在評論中說,你並不需要一個SELECT或IF,你可以指定爲更新語句,並與和/或多個約束上。

$sql = "UPDATE ". TOPICS_TABLE ." 
     SET topic_first_poster_avatar = '" . $db->sql_escape($avatar_info) ."' 
     WHERE topic_poster = " . (int) $row['user_id'] . " AND topic_first_poster_avatar = ''"; 
+0

請您至少提及可能的陷阱/安全問題,並且OP應該使用參數化查詢。任何時候你有能力推薦最佳實踐/更好的做事方式,你都應該指出。 –

+0

@ Clockwork-Muse我看到的唯一潛在的安全問題是可疑的sql_escape,但不知道這是什麼,我真的無法提供任何建議。 user_id是安全的,因爲它被整形爲一個整數,我可以假定這個常量是安全的。準備好的查詢總是更好,但沒有足夠的信息讓我看到任何明顯的安全威脅。 – Devon

相關問題