Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在sql插入查询PDO中传递包含逗号的字符串_Php_Mysql_Pdo - Fatal编程技术网

Php 如何在sql插入查询PDO中传递包含逗号的字符串

Php 如何在sql插入查询PDO中传递包含逗号的字符串,php,mysql,pdo,Php,Mysql,Pdo,我正在数据库中启动一个insert查询,如下所示: $upd_noti = $dbh->prepare("UPDATE tbl_notification SET message=:msg,datetime=:date,userto=:part_reg_id,userfrom=:reg_id,post_id=:postid,status=:status,noti_read=:notiread,noti_type=:notitype,msg_type=:msgtype WHERE tms_id

我正在数据库中启动一个insert查询,如下所示:

$upd_noti = $dbh->prepare("UPDATE tbl_notification SET message=:msg,datetime=:date,userto=:part_reg_id,userfrom=:reg_id,post_id=:postid,status=:status,noti_read=:notiread,noti_type=:notitype,msg_type=:msgtype WHERE tms_id=:tmsid AND userto=:to AND userfrom=:from AND noti_type=:type");

    $upd_noti->execute(array(':msg'=>$msgsdf,':date'=>$todateghfd1,':part_reg_id'=>$partner_reg_id,':reg_id'=>$reg_id,':postid'=>$postid1,':status'=>'unread',':notiread'=>'false',':notitype'=>'partner',':msgtype'=>'accept request',':tmsid'=>$tms_id,':to'=>$reg_id,':from'=>$partner_reg_id,':type'=>'partner'));
UPDATE tbl_notification SET message='Football,Badminton,Cricket,Table Tennis,Tennis,Volleyball',datetime='2017-07-20 11:04:47',userto='4',userfrom='3',post_id='4326',status='unread',noti_read='false',noti_type='partner',msg_type='accept partner' WHERE tms_id='2'
我正在传递的数组值:

Array ( [:msg] => has accepted your request to play American Football,Athletics,Australian Rules,Badminton,Basketball,Camogie,Cricket,Cycling,Darts,Football,Gaelic Football,Golf,Hockey,Hurling,Judo,Kick Boxing,Korfball,Lacrosse,Netball,Rugby League,Rugby Union,Running,Sailing,Softball,Squash,Swimming,Table Tennis,Tag Rugby,Tennis,Touch Rugby,Triathlon,Volleyball, [:date] => 2017-07-20 12:47:29 [:part_reg_id] => 10 [:reg_id] => 1 [:postid] => 1080 [:status] => unread [:notiread] => false [:notitype] => partner [:msgtype] => accept request [:tmsid] => 19 [:to] => 1 [:from] => 10 [:type] => partner )
现在我的主要问题是我得到的结果如下:

UPDATE tbl_notification SET message=Football,Badminton,Cricket,Table Tennis,Tennis,Volleyball,datetime=2017-07-20 11:04:47,userto=4,userfrom=3,post_id=4326,status=unread,noti_read=false,noti_type=partner,msg_type=accept partner WHERE tms_id=2
而我希望查询的输出如下所示:

$upd_noti = $dbh->prepare("UPDATE tbl_notification SET message=:msg,datetime=:date,userto=:part_reg_id,userfrom=:reg_id,post_id=:postid,status=:status,noti_read=:notiread,noti_type=:notitype,msg_type=:msgtype WHERE tms_id=:tmsid AND userto=:to AND userfrom=:from AND noti_type=:type");

    $upd_noti->execute(array(':msg'=>$msgsdf,':date'=>$todateghfd1,':part_reg_id'=>$partner_reg_id,':reg_id'=>$reg_id,':postid'=>$postid1,':status'=>'unread',':notiread'=>'false',':notitype'=>'partner',':msgtype'=>'accept request',':tmsid'=>$tms_id,':to'=>$reg_id,':from'=>$partner_reg_id,':type'=>'partner'));
UPDATE tbl_notification SET message='Football,Badminton,Cricket,Table Tennis,Tennis,Volleyball',datetime='2017-07-20 11:04:47',userto='4',userfrom='3',post_id='4326',status='unread',noti_read='false',noti_type='partner',msg_type='accept partner' WHERE tms_id='2'
我基本上无法在占位符中传递的字符串周围添加引号('),因为它有逗号(,)。

尝试这样做

$upd_noti->execute(array(':msg'=>"'".$msgsdf."'",':date'=>$todateghfd1,':part_reg_id'
             =>$partner_reg_id,':reg_id'=>$reg_id,':postid'=>$postid1,':status'=>'unread',
              ':notiread'=>'false',':notitype'=>'partner',':msgtype'=>'accept 
              request',':tmsid'=>$tms_id,':to'=>$reg_id,':from'=>$partner_reg_id,':type'=>'
              partner'));
只需将$msgsdf替换为$msgsdf即可。


这对你有用。

我不明白你的问题。您的查询如何生成您得到的结果?您没有向我们展示完整的代码或告诉我们完整的故事。您还应该规范化您的数据库。上次我们遇到同样的问题时,我们只是在应用程序端替换为原始sql查询生成准备好的语句(是的,我知道这很糟糕)@Fred ii-我已经编写了我正在激发的PDO查询。我只想知道我传递的值周围的add“”的格式。准备语句的全部要点是,这些引号是以安全的方式自动添加的。不要手动添加它们。但是这里这些引号没有添加,所以你可以手动添加,这样问题就解决了吗?