PDA

View Full Version : How do you check multifield unique keys in DataMan?


Jaxel
04-01-2010, 10:34 PM
So I'm using the DataMan, and it seems pretty simple... however, I am having problems checking for unique values... This is one of my VF_METHOD functions...

function verify_serviceVAL(&$serviceVAL)
{
$serviceID = $this->fetch_field('serviceID');

if (!$media = $this->dbobject->query_first("
SELECT * FROM " . TABLE_PREFIX . "media AS media
WHERE serviceVAL = '" . $serviceVAL . "'
AND serviceID = '" . $serviceID . "'
"))
{
$this->error('media_already_exists');
return false;
}

return true;
}


Theoretically, with this code, if the combined values for serviceVAL and serviceID are not unique, it should return an error. However, it doesn't seem to be working for me, and I keep getting a database error...

Database error in vBulletin 4.0.2:

Invalid SQL:
INSERT INTO media
(categoryID, userID, serviceID, serviceVAL, username, title, description, length, dateline)
VALUES
(2, 1, 2, '9953368', 'Jaxel', 'Nature by Numbers', 'A SHORT MOVIE INSPIRED ON NUMBERS', 224, 1270164500);

MySQL Error : Duplicate entry '2-9953368' for key 2
Error Number : 1062


In my table, I have a UNIQUE KEY called "service" for "serviceID, serviceVAL"; which is why its posting the error. However, the code in the datamanager I have above should prevent this hard error from showing it up. But its not working...

Am I doing something wrong?

--------------- Added 1270165322 at 1270165322 ---------------

Also, quick question about data managers... what is the difference between REQ_NO and REQ_AUTO; the manual doesn't really explain a difference.

Jaxel
04-03-2010, 04:38 AM
Anyone know anything about this? This is important...

Also, how does $this->error work if you are running AJAX scripts? When I'm running my scripts through AJAX, it just fails silently, and doesn't tell you why it failed.

--------------- Added 1270327211 at 1270327211 ---------------

Okay, i figured it out... I checked for multifield keys in the PRE_SAVE_ONCE function. There it worked...

But I still don't know how to send a failed response in AJAX.