pl: Platzhalter in MySQL Funktionen

Beitrag lesen

hi

function mysql_julianday($d,$m,$y, PDO $pdo){
    $sth = $pdo->prepare("select 1721060 + to_days(concat(?,'-',?,'-',?)) as jd");
    $sth->execute(array($y,$m,$d));

Du übergibst ein Datum also scheibchenweise in der Form Tag, Monat, Jahr? Dann solltest Du es aber in eine geeignete Schreibweise übersetzen, bevor Du das MySQL machen lässt. Wenn man den Code nach Monaten anschaut, wird man sich wieder erst zusammensuchen müssen, was denn da an Parametern warum an den MySQL-Server geht und was der daraus machen soll. Warum also nicht so, dass es auf einen Blick klar ist?

$date = sprintf('%3$04d-%2$02d-%1$02d', $d, $m, $y)

Was bitte soll denn daran klarer sein? Und warum bleibst Du nicht bei Deinem ersten Vorschlag mit den namentlichen Platzhaltern, guckmal:

function mysql_julianday($d,$m,$y, PDO $pdo){
    $sth = $pdo->prepare("select 1721060 + to_days(concat(:year,'-',:month,'-',:day)) as jd");
    $sth->execute(array(
        ':year' => $y,
        ':month' => $m,
        ':day' => $d
    ));
    $r = $sth->fetch();
    return $r['jd'];
}

Und das funktioniert bestens. MFG