SORU
8 EKİM 2008, ÇARŞAMBA


PHP PDO İfadeleri parametre olarak tablo veya sütun adı kabul edebilir?

Neden PDO hazırlanmış deyimi, tablo adı geçebilir mi?

$stmt = $dbh->prepare('SELECT * FROM :table WHERE 1');
if ($stmt->execute(array(':table' => 'users'))) {
    var_dump($stmt->fetchAll());
}

Başka güvenli bir şekilde SQL sorgusu içine tablo eklemek için bir isim var mı? Güvenli yapmak istemiyorum

$sql = "SELECT * FROM $table WHERE 1"

CEVAP
8 EKİM 2008, ÇARŞAMBA


Lütfen bkz: http://us3.php.net/manual/en/book.pdo.php#69304

Tablo ve Sütun adları PDO parametreleri tarafından değiştirilemez.

Bu durumda sadece süzgeç ve el ile veri sterilize. Bunu yapmanın bir yolu olduğu için geçişte kestirme parametreleri işlevi yürütülür sorgu dinamik ve sonra bir switch() deyimi oluşturmak için bir beyaz liste geçerli değerler için kullanılacak tablo adı veya bir sütun adı. Bu şekilde kullanıcı girişi hiç doğrudan sorgu gider. Örneğin:

function buildQuery( $get_var ) 
{
    switch($get_var)
    {
        case 1:
            $tbl = 'users';
            break;
    }

    $sql = "SELECT * FROM `$tbl`";
}

Hiçbir varsayılan durumda bırakarak veya bir hata iletisi döndüren bir varsayılan durumda kullanarak istediğiniz değerler alışmak kullanılan olun.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ArkticPlanet

    ArkticPlanet

    9 ŞUBAT 2010
  • Defence Videos

    Defence Vide

    13 Mayıs 2013
  • skiesofblack.net

    skiesofblack

    14 HAZİRAN 2009