I happened to notice last night that db_affected_rows() is the number of matched rows in the WHERE clause, not the number of rows that were actually changed.&nbsp; So (maybe only in drupal) if the data is the same these count as &quot;affected&quot; rows.<br>
<br>If you grep core for db_affected_rows you see that the logic is <br>&nbsp; db_query(&quot;UPDATE {variable} SET value = &#39;%s&#39; WHERE name = &#39;%s&#39;&quot;,<br>&nbsp; if (!db_affected_rows()) {<br>&nbsp;&nbsp;&nbsp; @db_query(&quot;INSERT INTO {variable} (name, value) VALUES (&#39;%s&#39;, &#39;%s&#39;)&quot;,<br>
&nbsp; }<br><br><br>--mark<br><br><div class="gmail_quote">On Mon, Mar 31, 2008 at 9:13 AM, Earnie Boyd &lt;<a href="mailto:earnie@users.sourceforge.net">earnie@users.sourceforge.net</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div></div><div class="Wj3C7c">Quoting John Fiala &lt;<a href="mailto:jcfiala@gmail.com">jcfiala@gmail.com</a>&gt;:<br>
<br>
&gt; On Mon, Mar 31, 2008 at 6:43 AM, Lluís &lt;<a href="mailto:enboig@gmail.com">enboig@gmail.com</a>&gt; wrote:<br>
&gt;&gt; I need to save a value inside a table; I think the best/fast way of<br>
&gt;&gt; doing so is:<br>
&gt;&gt;<br>
&gt;<br>
&gt; Personally I like to keep track internally if a row&#39;s been saved to<br>
&gt; the db or not - but I&#39;ve seen some folks try the UPDATE statement,<br>
&gt; call db_affected_rows to see if any rows were changed, and if none<br>
&gt; were, to do the insert.<br>
<br>
</div></div>Doesn&#39;t work if data is the same; no rows will be updated and<br>
db_affected_rows will return 0. &nbsp;The method the OP used is correct<br>
insert else update.<br>
<div><div></div><div class="Wj3C7c"><br>
Earnie -- <a href="http://for-my-kids.com/" target="_blank">http://for-my-kids.com/</a><br>
-- <a href="http://give-me-an-offer.com/" target="_blank">http://give-me-an-offer.com/</a><br>
<br>
</div></div></blockquote></div><br>