Felix Riesterer: Platzhalter in MySQL Funktionen

Beitrag lesen

Lieber pl,

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)
$sth = $pdo->prepare("select 1721060 + to_days(?)) as jd");
$sth->execute(array($date));

Liebe Grüße

Felix Riesterer