Moin,
folgendes Problem. Ich arbeite mit PDO und prepared Statements
Ich hab mir dazu nen kleinen QueryBuilder gebastelt, der alle Optionen übergeben bekommt.
So übergebe ich (was nicht funktioniert, trotz $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
$rigths=1111111111111111111111111111111111111111111111111111111111111111;
$queryVars->clause .= " AND (:RIGHTS & mg.group = mg.group OR kta_modules.modulgroup=0)";
$queryVars->preparedVars[':RIGHTS']=$rights;
Es soll nun über die Bitweise Verrechnung der Rechtevariable mit dem mg.group-Eintrag herausgefunden werden ob das Modul aufgerufen werden darf.
Nun ist das problem, dass die bitweise operation nur dann funktioniert, wenn die rechte entweder als Zahl oder als BitWert übergeben wurden. Auf der DB sind ja 64 Bit möglich. Wenn ich nun die Rechte-Variable in eine Zahl umwandeln möchte kommt irgendwass XXX+E19 raus. Diese wird natürlich von MySQL nicht akzeptiert.
Wenn ich die BIT-Folge direkt übergeben möchte, muss ich dieser ja ein " b' " voranstellen.
Ich könnte nun
$rigths=1111111111111111111111111111111111111111111111111111111111111111;
$queryVars->clause .= " AND (b'".$rights." & mg.group = mg.group OR kta_modules.modulgroup=0)";
notieren, was aber höchst unsicher ist. Wie bekomme ich es hin, dass entweder eine für MySQL gültige Zahl oder die BIT-Folge direkt an MySQL übergeben kann und dass es sicher ist?
ich habe versucht
$rigths=1111111111111111111111111111111111111111111111111111111111111111;
$queryVars->clause .= " AND (b':RIGHTS & mg.group = mg.group OR kta_modules.modulgroup=0)";
$queryVars->preparedVars[':RIGHTS']=$rights;
$rigths=1111111111111111111111111111111111111111111111111111111111111111;
$queryVars->clause .= " AND (:RIGHTS & mg.group = mg.group OR kta_modules.modulgroup=0)";
$queryVars->preparedVars[':RIGHTS']="b'".$rights;
Bitte um Vorschläge.
Gruß Bobby
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <- ### Henry L. Mencken ### -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <- ### Viktor Frankl ### ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)