# زبان های اسکریپتی > PHP >  چطوری میشه توی PDO اسم یک Column رو به صورت متغییر Binparam

## leaping

سلام
چطوری میشه توی PDO اسم یک ستون رو (Column Name) رو به عنوان یک متغییر مثل مقدار یک ستون به وسیله متد Bindparam بایند کرد؟
مثل همچین چیزی

منظورم اینه که اسم خود ستون رو هم به صورت مقدار , مقدار دهی کرد با متغییر


UPDATE `TableName` SET :ColumnName = :ColumnValue

----------


## j_naroogha@yahoo.com

http://php.net/manual/en/pdostatement.bindparam.php
با bindparam میشه لینک بالا رو نگا کن...

----------


## leaping

> http://php.net/manual/en/pdostatement.bindparam.php
> با bindparam میشه لینک بالا رو نگا کن...


ممنون
اما
دوست عزیز , خودم در بالا bindparam رو ذکر کردم ولی با این متد فقط میشه value رو بایند کرد و نه نام ستون و یا Column Name رو

----------


## j_naroogha@yahoo.com

خب یه راه حل هم اینه که رشته رو با هم جمع کنی
UPDATE `TableName` SET . $col . = :ColumnValue
البته سینتکس ارور داره که خودتون استادین توی رفعش...

----------


## MMSHFE

از bindParam نمیشه استفاده کرد چون توی کوتیشن میگذاره و همونطور که میدونید، اسامی فیلدها باید توی Backquote بیاد. میتونید با متد quote اسم فیلد رو Escape کنید و بعد با str_replace کوتیشنها رو به Backquote تبدیل کنید و توی عبارت استفاده کنید. مثال:
$stmt = $pdo->prepare('UPDATE `table` SET ' . str_replace('\'', '`', $pdo->quote($column)) . '=:value');
$stmt->bindParam(':value', $value, PDO::PARAM_STR, 255);
$stmt->execute();

----------


## leaping

> خب یه راه حل هم اینه که رشته رو با هم جمع کنی
> UPDATE `TableName` SET . $col . = :ColumnValue
> البته سینتکس ارور داره که خودتون استادین توی رفعش...


ممنون
توی این روش مشکل SI وجود داره که البته دقیقا مطمئن نیستم اما میخواستم از چیزی مثل همون prepare بشه استفاده کرد بازم ممنون از پیگیریت

----------


## MMSHFE

با استفاده از متد quote مشکل Injection برطرف میشه.

----------

