我有这样的数组
$a = array( 'phone' => 111111111, 'image' => "sadasdasd43eadasdad" );
Run Code Online (Sandbox Code Playgroud)
当我进行var-dump时,我得到了这个 - >
{ ["phone"]=> int(111111111) ["image"]=> string(19) "sadasdasd43eadasdad" }
Run Code Online (Sandbox Code Playgroud)
现在我尝试使用IN语句将其添加到数据库 -
$q = $DBH->prepare("INSERT INTO user :column_string VALUES :value_string");
$q->bindParam(':column_string',implode(',',array_keys($a)));
$q->bindParam(':value_string',implode(',',array_values($a)));
$q->execute();
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是implode返回一个字符串.但'phone'列是数据库中的整数,并且数组也将其存储为整数.因此我收到SQL错误,因为我的最终查询看起来像这样 -
INSERT INTO user 'phone,image' values '111111111,sadasdasd43eadasdad';
Run Code Online (Sandbox Code Playgroud)
哪个是错误的查询.有没有办法解决它.
我的列名是动态的,基于用户想要插入的内容.所以我不能使用像:phone和:image这样的占位符,因为我可能并不总是得到这两列的值.如果有办法,请告诉我.否则我将不得不为每种类型的更新定义多个功能.
谢谢.