تفاوت متدهای bindParam و bindValue و bindColumn در PDO

image post

تفاوت متدهای bindParam و bindValue و bindColumn در PDO

تفاوت متدهای bindParam و bindValue و bindColumn در PDO

متد BindParam : یه متغیر PHP رو به اسم یا علامت‌سؤال متناظر با اون داخل دستور SQL نسبت میده. برخلاف bindValue، متغیری که نسبت داده میشه، ارجاعیه و فقط در زمان اجرای دستور execute ارزیابی میشه. مثال:

$st = $pdo->prepare('SELECT * FROM `table` WHERE (`age`>:age);');
$age = 30;
$st->bindParam(':age', $age, PDO::PARAM_INT);
$age = 35;
$st->execute(); // $st is executed with age=35

متد BindValue : یه مقدار رو به اسم یا علامت‌سؤال متناظر با اون داخل دستور SQL نسبت میده. مثال:

$st = $pdo->prepare('SELECT * FROM `table` WHERE (`age`>:age);');
$age = 30;
$st->bindValue(':age', $age, PDO::PARAM_INT);
$age = 35;
$st->execute(); // $st is executed with age=30

متد BindColumn : این متد برخلاف دوتای قبلی، موقع خوندن از دیتابیس کاربرد داره نه موقع ساخت Prepared Statement و کارش اینه که یه متغیر رو به یک ستون (فیلد) توی مجموعه‌ی نتایج کوئری نسبت میده. هربار که متد fetch یا fetchAll رو صدا بزنین، تمام مقادیری که توی ستون اعلام‌شده قرار میگیرن، داخل متغیری که به اون ستون نسبت داده شده کپی میشن. مثال:

$st = $pdo->prepare('SELECT * FROM `table`');
$st->execute();
$st->bindColumn('id', $id);
$st->bindColumn('name', $name);

while($row = $st->fetch(PDO::FETCH_BOUND)) {
    echo "<p>{$id} : {$name}</p>";
}

 

دنیس ریچی : یونیکس بسیار ساده هست، تنها یک نابغه باید باشید تا بتوانید سادگی آن را درک کنید.