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

  • Joshua Benedict

    Joshua Bened

    26 EKİM 2013
  • Matus Slovak

    Matus Slovak

    5 Temmuz 2007
  • RyanXLT

    RyanXLT

    22 Ocak 2011