2011-04-16 21 views
5

oci_bind_by_name nedir? Ben php kılavuzunda okuyup herhangi bir şey birisi bu örneğe banaoci_bind_by_name nedir?

göz anlatmaya lütfen anlayamıyorum:

$name = "O'Reilly"; 
$stid = oci_parse($mycon, 'INSERT INTO CUSTOMERS (NAME) VALUES (:nm)'); 
oci_bind_by_name($stid, ':nm', $name, -1); 
oci_execute($stid); 

-1 için nedir?

+1

Lütfen şu ana kadar vermiş olduğunuz cevapları gözden geçirin ve ya sorununuzu çözen birini kabul edin, ya da sorunun nedenini neden çözmediğinizi belirlemek için sorunuzu geliştirin ve iyileştirin, böylece insanların cevaplarını iyileştirme şansı vardır. Teşekkürler. – Gordon

cevap

9

Bu adlandırılmış parametrelere değerleri bağlar:

$name = "O'Reilly"; 
$stid = oci_parse($mycon, 'INSERT INTO CUSTOMERS (NAME) VALUES (:nm)'); 
oci_bind_by_name($stid, ':nm', $name, -1); 
oci_execute($stid); 

Yani O'Reilly olacağını sorgu :nm çalıştırdığınızda. -1, bağlanan değerin, değişken kadar uzun olması gerektiği anlamına gelir. Bu varsayılan değer. Bunu ayarlamak zorunda değilsin. Yalnızca mevcut değişkenleri bağladığınız sürece rahatsız olmanıza gerek yoktur.

Sen Cilt

başka bir kullanıcı veya işlem başlangıçta idam bile deyim bağlam ve caches from previous executions of the statement yeniden veritabanı izin verdiğinden bu yöntemi kullanmak istiyorum. Bağlama, SQL Injection endişelerini azaltır, çünkü bir bağlama değişkeni ile ilişkili veriler asla SQL ifadesinin bir parçası olarak değerlendirilmez. Alıntıya veya kaçmaya gerek yoktur. Bunu anlamı

daha güvenli ve daha iyi performans sahiptir.

+0

onun gibi 'mysql_escape_real_string'? ve bu örneğe bakın '$ name =" O'Reilly "; $ stid = oci_parse ($ mycon, 'MÜŞTERİ İÇERİSİNDE (ADI) DEĞERLER (: nm)'); oci_bind_by_name ($ stid, ': nm', $ name, -1); oci_execute ($ stid); '-1' nedir? – user700792

+0

@ user Hayır, 'mysql_real_escape_string' gibi değil. Daha çok mysqli_stmt_bind_param veya PDO :: prepare' gibi. '-1', param değerinin olabileceği maksimum uzunluk için varsayılan değerdir. "Değer olduğu sürece" anlamına gelir. – Gordon

0

oci_bind_by_name yöntemi şu değerin: nm'nin "O'Reilly" değerinin -1 varsayılan değer olduğunu belirtmektedir ... bu nedenle rahatsız olmanız gerekir. Eğer metodu, değerin: nm cinsinden uzunluğuna sahip olduğunu söyleyecek başka bir değer belirtirseniz.