Nasıl dinamik bir sorgu için PHP parametreli PDO deyimi oluşturmak mı?

2 Cevap php

Bu zaten sorulmuş özür dilemek durumunda. Ben statik SQLs ilgili cevaplar gördüm, ama bu durumda ben zamanında dinamik olarak inşa edilmiş bir sorgu dizesi için) (PDO-> hazırlamak kullanmak istiyorum.

Basit bir örnek içine Breaking:

$TempSQL = "SELECT field1, field2, field3 FROM table WHERE ";

if ($numberParams == 1) {
    $TempSQL = $TempSQL . " field1 = '$val1' ";
} else {
    $TempSQL = $TempSQL . " field2 = '$val2' ";
    $TempSQL = $TempSQL . " AND field3 = '$val3' ";
}

db->query($TempSQL);

Nasıl bir db-> prepare () olarak yeniden do?

Ben inşa etmeliyiz deyim-> (array (: => $ var) 'param') yürütmek de anında)?

Daha iyi / kıvrımlara yolu var mı?

2 Cevap

Belki de böyle bir şey. (Denenmemiş)

$TempSQL = "SELECT field1, field2, field3 FROM table WHERE ";
$args=array();

if ($numberParams == 1) {
    $TempSQL = $TempSQL . " field1 = :val1"
    $args[':val1']=$val1;
} else {
    $TempSQL = $TempSQL . " field2 = :val2 and field3 = :val3";
    $args[':val2']=$val2;
    $args[':val3']=$val3;
}

$stmt=$db->prepare($TempSQL);
$stmt->execute($args);

Sizin örnekte dayanarak, bir kıvrımlara yol yerine anahtarlama bir döngü olacaktır.

db->) (hazırlamak size bindParam () veya PDOStatement->exec() üzerine bir dizi kullanarak (php.net üzerine, örnek alan adının önünde bir iki nokta üst üste koyarak) desenleri değiştirmek için izin verir. Bunun yerine alan değerlerini adlandırma ? from examples 3 and 4 kullanabilirsiniz.

Hala tüm alanları SQL deyimi için bilinen gerektirir.