随着Parse关闭,我们已将我们的应用数据迁移到自托管的mongodb。
但是我们遇到了单引号的问题。
例如:
这是新的一天。
当数据库由parse本身托管时,我们从来没有遇到过这个问题,也从不需要额外的代码来逃避单引号,但现在在迁移解析并使用自托管的mongodb之后我们就遇到了这个问题。
MongoDb数据
{ "_id" : "vryoEYQqDt", "rowid" : 9, "image" : "982621c6338150d34c345ee62baa3420_outlet-335936476.jpg", "_created_at" : ISODate("2015-03-03T09:08:43.217Z"), "_updated_at" : ISODate("2016-11-09T08:20:21.074Z"), "name" : "Hello World" }
解析插入mongodb的代码
$query = new ParseQuery("prodcuts");
$query->equalTo("rowid", $rowid);
$object = $query->first();
$object->set("name", $pro_data->name);
try {
$object->save();
} catch (ParseException $ex) {
// Execute any logic that should take place if the save fails.
// error is a ParseException object with an error code and message.
echo 'Failed to create new object, with error message: ' + $ex->getMessage();
}
"$pro_data->name"
- 从MySql数据库中获取名称。目前“这是新的一天”。
当我们执行此代码时。 Mongo数据库更新了"_updated_at" : ISODate("2016-11-09T08:20:21.074Z")
字段,但"name" : "Hello World"
未更新,因为它有一个未转义的单引号。
即使是Parse也没有任何例外。
有没有一种方法或配置可以在不使用php中的额外代码的情况下转义MongoDb中的单引号?
提前完成。
更新
实际上可能不是单引号没有更新mongo db而是UTF-8字符。
保存前“$ object”的值:
Parse\ParseObject Object
(
[serverData:protected] => Array
(
[rowid] => 9
[image] => Parse\ParseFile Object
(
[name:Parse\ParseFile:private] => 982621c6338150d34c345ee62baa3420_outlet-335936476.jpg
[url:Parse\ParseFile:private] =>
[data:Parse\ParseFile:private] =>
[mimeType:Parse\ParseFile:private] =>
)
[name] => Matzig 33'cl
)
[operationSet:protected] => Array
(
[name] => Parse\Internal\SetOperation Object
(
[value:Parse\Internal\SetOperation:private] => M?tzig 33'cl
[isAssociativeArray:Parse\Internal\SetOperation:private] =>
)
)
[estimatedData:Parse\ParseObject:private] => Array
(
[rowid] => 9
[image] => Parse\ParseFile Object
(
[name:Parse\ParseFile:private] => 982621c6338150d34c345ee62baa3420_outlet-335936476.jpg
[url:Parse\ParseFile:private] =>
[data:Parse\ParseFile:private] =>
[mimeType:Parse\ParseFile:private] =>
)
[name] => M?tzig 33'cl
)
[dataAvailability:Parse\ParseObject:private] => Array
(
[rowid] => 1
[image] => 1
[name] => 1
)
[className:Parse\ParseObject:private] => products
[objectId:Parse\ParseObject:private] => vryoEYQqDe
[createdAt:Parse\ParseObject:private] => DateTime Object
(
[date] => 2015-03-03 09:08:43.217000
[timezone_type] => 2
[timezone] => Z
)
[updatedAt:Parse\ParseObject:private] => DateTime Object
(
[date] => 2016-11-10 10:20:35.823000
[timezone_type] => 2
[timezone] => Z
)
[hasBeenFetched:Parse\ParseObject:private] => 1
)
保存后$对象值
Parse\ParseObject Object
(
[serverData:protected] => Array
(
[rowid] => 9
[image] => Parse\ParseFile Object
(
[name:Parse\ParseFile:private] => 982621c6338150d34c345ee62baa3420_outlet-335936476.jpg
[url:Parse\ParseFile:private] =>
[data:Parse\ParseFile:private] =>
[mimeType:Parse\ParseFile:private] =>
)
[name] => M?tzig 33'cl
)
[operationSet:protected] => Array
(
)
[estimatedData:Parse\ParseObject:private] => Array
(
[rowid] => 9
[image] => Parse\ParseFile Object
(
[name:Parse\ParseFile:private] => 982621c6338150d34c345ee62baa3420_outlet-335936476.jpg
[url:Parse\ParseFile:private] =>
[data:Parse\ParseFile:private] =>
[mimeType:Parse\ParseFile:private] =>
)
[name] => M?tzig 33'cl
)
[dataAvailability:Parse\ParseObject:private] => Array
(
[rowid] => 1
[image] => 1
[name] => 1
)
[className:Parse\ParseObject:private] => products
[objectId:Parse\ParseObject:private] => vryoEYQqDe
[createdAt:Parse\ParseObject:private] => DateTime Object
(
[date] => 2015-03-03 09:08:43.217000
[timezone_type] => 2
[timezone] => Z
)
[updatedAt:Parse\ParseObject:private] => DateTime Object
(
[date] => 2016-11-10 10:22:16.878000
[timezone_type] => 2
[timezone] => Z
)
[hasBeenFetched:Parse\ParseObject:private] => 1
)
这里 M?tzig 33'cl - > ? == 'ä'