PDOStatement::bindValue
Mengikat nilai ke tempat penampung bernama atau tanda tanya dalam pernyataan SQL.
Sintaks
bool PDOStatement::bindValue($parameter, $value[, $data_type]);
Parameter
$parameter: Pengidentifikasi parameter (campuran). Untuk pernyataan menggunakan tempat penampung bernama, gunakan nama parameter (:name). Untuk pernyataan yang disiapkan menggunakan sintaks tanda tanya, ini adalah indeks parameter berbasis 1.
$nilai: Nilai (campuran) untuk diikat ke parameter .
$data_type: Jenis data opsional (bilangan bulat) yang diwakili oleh konstanta PDO::P ARAM_*. Defaultnya adalah PDO::P ARAM_STR.
Tampilkan Nilai
TRUE pada keberhasilan, jika tidak FALSE.
Keterangan
Dukungan untuk PDO ditambahkan di Driver Microsoft versi 2.0 untuk PHP untuk SQL Server.
Contoh parameter
Contoh ini menunjukkan bahwa setelah nilai $contact terikat, mengubah nilai tidak mengubah nilai yang diteruskan dalam kueri.
<?php
$database = "AdventureWorks";
$server = "(local)";
$conn = new PDO("sqlsrv:server=$server ; Database = $database", "", "");
$contact = "Sales Agent";
$stmt = $conn->prepare("select * from Person.ContactType where name = ?");
$stmt->bindValue(1, $contact);
$contact = "Owner";
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
print "$row[Name]\n\n";
}
$stmt = null;
$contact = "Sales Agent";
$stmt = $conn->prepare("select * from Person.ContactType where name = :contact");
$stmt->bindValue(':contact', $contact);
$contact = "Owner";
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
print "$row[Name]\n\n";
}
?>
Catatan
Disarankan untuk menggunakan string sebagai input saat mengikat nilai ke kolom desimal atau numerik untuk memastikan presisi dan akurasi karena PHP memiliki presisi terbatas untuk angka titik float. Hal yang sama berlaku untuk kolom bigint, terutama ketika nilai berada di luar rentang bilangan bulat.
Contoh input desimal
Sampel kode ini menunjukkan cara mengikat nilai desimal sebagai parameter input.
<?php
$database = "Test";
$server = "(local)";
$conn = new PDO("sqlsrv:server=$server ; Database = $database", "", "");
// Assume TestTable exists with a decimal field
$input = 9223372036854.80000;
$stmt = $conn->prepare("INSERT INTO TestTable (DecimalCol) VALUES (?)");
// by default it is PDO::PARAM_STR, rounding of a large input value may
// occur if PDO::PARAM_INT is specified
$stmt->bindValue(1, $input, PDO::PARAM_STR);
$stmt->execute();