PHP PDO sorgu işlevi

0 Cevap php

EDIT:

Çünkü aşağıda bizim konuşmanın doğru aşağıda cevabını işaretleme ediyorum. Cevapsız parçaları bir yanıt göndermek için çekinmeyin ve ben burada tekrar kontrol ediniz olacak. Teşekkürler.

= - = - = - = - = - = - = - = -

Ben bir fonksiyon Hazırlanan tüm ifadeleri işlemek için çalışıyorum. Benim eski kodu, select sorguları aracılığıyla mysql_fetch_array-ing edildi. Ben bir Ekle Güncelleme yapıyor ya da sil eğer ben bir belki seçme ve lastInsertId veya AffectedRows falan yapıyorum ben sadece bir dizi dönmek istiyorum.

Benim sorum bir şey veri varsa size bildirir PDO sınıf bulunmaktadır kenara 'seçmek' veya 'insert' için sql ayrıştırma ya $ type = 'Seç' gibi işleve başka bir parametre ekleyerek, nedir?

Ben tarafından döndürülen değeri almak veya fetchAll doğru olup olmadığını test edebilirsiniz yerde gördüm. Ne yapmam gerekiyor ki?

Ben de, fonksiyonu üzerinde herhangi bir geri bildirim açığım.

function pdo_query($sql,$data)
{
$stmt = $dbh->prepare($sql);
$first_row = true;

if(is_array($data)){
    foreach($data as $row){
        if(is_array($row)){
            foreach($row as $param => $value){
                if($first_row){
                    //http://bugs.php.net/43130 parameters can't have dashes
                    $stmt->bindParam($param, ${substr(str_replace('-','_',$param),1)});
                }
                ${substr(str_replace('-','_',$param),1)} = $value;
            }
            $stmt->execute();
            $first_row = false;
        }
    }
    while ($row = $stmt->fetch()) {
        $return[] = $row;
    }
}
return $return;
}

Edit: I haven't tried this yet, but is there any problem testing for $stmnt->fetch()? Also, if I did want to automate getting lastInsertId() or affected rows, it doesn't seem like I can figure out what type of query I'm doing after the fact. Here's where I'm at:

if ($rows = $stmt->fetchAll()) {
        return $rows;
    } else if (some_way_of_determining_if_an_insert_happened) {
        return $dbh->lastInsertId();
    } else {
        return some_way_of_returning_affected_rows
    }
}

0 Cevap