2011-11-28 21 views
7

ben hazırlanmış deyimleri yazmak benim PHP komut dosyası aynı değişken $stmt yeniden edilmiştir:Hazırlanan bir Bildirimin Önbelleğe Alınmış Olduğunu Nasıl Anlarım?

$stmt = $dbh->prepare("SELECT column_A FROM Table1 WHERE id=?"); 
$stmt->bindValue(1, $id, PDO::PARAM_INT); 
$stmt->execute(); 
.... 

$stmt = $dbh->prepare("UPDATE Table2 SET column_B=? WHERE column_A=?"); 
$stmt->bindValue(1, $name); 
$stmt->bindValue(2, $column_A); 
$stmt->execute(); 

Sorum şu, iki ifade önbelleğe ve yazılı olmak üzere eğer anlarım nasıl ikinci ifade vermedi Her iki ifade de aynı değişken adını paylaşıyor olsa da ilk ifadenin üzerine yazılsın mı?

+0

+1 bana yeni bir şey öğrettiği için –

cevap

2

Tablolar veritabanı motoru ve PHP ile hazırlanır, bkz:

Yani MySQL "önbellek" hazırlamak geçersiz kılmaz PHP aynı değişken adını yeniden.

+1

Bu yalnızca setAttribute (PDO :: ATTR_EMULATE_PREPARES, false) için geçerli mi, yoksa hem doğru hem de yanlış durumlarda uygulanabilir mi? –

+0

O bağlantıyı diyor "verilen isimde bir hazır deyimi zaten varsa, bu örtülü ayırmanın yeni deyim hazırlanmadan önce." Stmt_name'in MySQL tarafından atanıp PHP değişken adından alınmadığını nasıl anlarım? –

+0

@BenHuh: Dürüst olmak gerekirse, hiçbir fikrim yok. Benim tahminim, stmt_name, PHP tarafından SQL sorgusunun kendisinden hesaplanan bir çeşit karma. MySQL belgelerine ve PDO/mysql kaynak koduna hızlıca baktım ve her iki yönde de işaret eden bir şey bulamadım ama bence MySQL günlükleri bir çeşit faydalı bilgi sağlayabilir. –

0

Değilsin. Ancak değişkeni geçersiz kılmak çok fazla değişmez - değişkene yeni bir değer atarsınız, hiçbir şey düzenlemezsiniz.

İlgili konular