Hallo Cliff,
ich habe deine beiden Vorschläge umgesetzt.
PHP-Code:
<?php
class MyRegexps extends Backend
{
public function checkActivkey($strRegexp, $varValue, Widget $objWidget)
{
if ($strRegexp == 'myCustomRegexp') {
$objResult = $this->Database->prepare("SELECT COUNT(mm_payments.activationkey) AS count FROM mm_payments, mm_member_license WHERE mm_payments.activationkey =? AND mm_payments.status=? AND mm_member_license.activationkey !=?")
->limit(1)
->execute($varValue, 3, $varValue);
$erg = $objResult->count;
if ($erg == 0) {
$objWidget->addError('The ' . $objWidget->label . ' is in use, not registered or not unlocked at this time".');
}
return true;
}
return false;
}
}
Im Debugmodus wird mir jedoch als Ergebnis folgendes ausgegeben:
PHP-Code:
[37] => Array
(
[0] => SELECT COUNT(mm_payments.activationkey) AS count FROM mm_payments, mm_member_license WHERE mm_payments.activationkey ='68O9-5R23-X875' AND mm_payments.status=3 AND mm_member_license.activationkey !='68O9-5R23-X875' LIMIT 0,1
[1] => 1 rows returned
[2] => Array
(
[id] => 1
[select_type] => SIMPLE
[table] =>
[type] =>
[possible_keys] =>
[key] =>
[key_len] =>
[ref] =>
[rows] =>
[Extra] => Impossible WHERE noticed after reading const tables
)
)
Irgendwie kommt er mit der WHERE clausel nicht klar, obwohl diese in phpmyadmin getestet und auch funktioniert.
Lesezeichen