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

  • 2ndfloor91

    2ndfloor91

    17 Kasım 2007
  • Jeremy Stark

    Jeremy Stark

    23 Mayıs 2010
  • jesiel santos

    jesiel santo

    15 Ocak 2009