View Full Version : What is wrong with this plugin query?
$db->query_write("UPDATE " . TABLE_PREFIX . "thread SET open = 0 WHERE threadid = '$threadid' AND votetotal/votenum <= '5'");
Why doesn't that work?
If I change it to:
$db->query_write("UPDATE " . TABLE_PREFIX . "thread SET open = 0 WHERE threadid = '$threadid' AND votetotal <= '5'");
It works fine...
Because votetotal/votenum is invalid sql?
Andreas
09-15-2005, 01:02 AM
@merk
Works just fine for me ...
Strange.
May have been a chance in the way MySQL deals with certain syntax then? What version of MySQL flypaper / Kirby?
@merk
Works just fine for me ...
If I just run the query, by itself, it works fine. As a plugin, it doesn't work tho...
edit: And I think I'm using 4.0.25
Andreas
09-15-2005, 01:15 AM
Well, depends where you run that as a Plugin (eg. which Hook).
I am using an outdated mySQL 4.1.12, but I think that doesn't matter much.
oops. Im using 4.1.12 also.
And the hook is threadrate_add.
Andreas
09-15-2005, 01:28 AM
It think the following does happen:
1) The Threadrate Datamager gets the $threadinfo array (which contains open=1)
2) You issue the Query to close the Thread
2) save() is called on the Threadrate Datamanager,
After saving, the Datamanager instantiates a Thread Datamanager to update votetotal/votenum using $threadinfo that has passed earlier (containing open=1)
Then it writes this to the Database - undoing what your query did.
Does that make sense?
I'd hook into threaddata_presave and check the rating there, if it's below your limit set open=0.
This should work, without any Query overhead.
What is the error message? A bit hard to determin the problem without knowing why it "doesnt work".
It think the following does happen:
1) The Threadrate Datamager gets the $threadinfo array (which contains open=1)
2) You issue the Query to close the Thread
2) save() is called on the Threadrate Datamanager,
After saving, the Datamanager instantiates a Thread Datamanager to update votetotal/votenum using $threadinfo that has passed earlier (containing open=1)
Then it writes this to the Database - undoing what your query did.
Does that make sense?
I'd hook into threaddata_presave and check the rating there, if it's below your limit set open=0.
This should work, without any Query overhead.
Would that explain the 2nd query I gave in the original post working tho? btw, I will test this tonite for sure...
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.