Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.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
我应该如何将一个数组从iOS传递到PHP,再传递到MySQL,以获得适当的存储(以及返回)?_Php_Ios_Mysql_Arrays - Fatal编程技术网

我应该如何将一个数组从iOS传递到PHP,再传递到MySQL,以获得适当的存储(以及返回)?

我应该如何将一个数组从iOS传递到PHP,再传递到MySQL,以获得适当的存储(以及返回)?,php,ios,mysql,arrays,Php,Ios,Mysql,Arrays,我知道这是一个很难回答的问题,但我认为我现在做的事情可能是错误的,所以我想了解一下什么是最佳实践 目前我有一批演员。比如说Objective-C中的NSArray*actors。我想将其传递到我的PHP页面进行存储 现在,我通过将数组转换为如下字符串,在HTTP POST上传递此信息: &actors=Joe Allen*Dave Smith*Mary Johnson*Alice Burg?movietitle=Runner 当它到达PHP时,我将通过如下的存储过程调用将其传递给MyS

我知道这是一个很难回答的问题,但我认为我现在做的事情可能是错误的,所以我想了解一下什么是最佳实践

目前我有一批演员。比如说Objective-C中的
NSArray*actors
。我想将其传递到我的PHP页面进行存储

现在,我通过将数组转换为如下字符串,在HTTP POST上传递此信息:

&actors=Joe Allen*Dave Smith*Mary Johnson*Alice Burg?movietitle=Runner
当它到达PHP时,我将通过如下的存储过程调用将其传递给MySQL:

CALL Add_Movie(movietitle, actors);
然后在存储过程中,我通过
*
将参与者“分解”到正确的表中。我做相反的事是为了让演员们回来。当我想把名字和姓氏分开的时候,这对我来说变得更加棘手了


不管怎么说,这对我来说真的很烦人。通过HTTP将数组传输到SQL存储并返回的最佳实践是什么?

我通常会将“普通旧”对象序列化到JSON(iOS端),发布JSON和php端,解码JSON。我为字典编写了一个类别,如下所示(您可以将其用作NSArray+JSON类别的模板,应该几乎相同)

NSDictionary+JSON.h:

#import <Foundation/Foundation.h>

@interface NSDictionary (JSON)
+(id) dictionaryWithJSONdata:(NSData*)jsonData;
+(id) dictionaryWithJSON:(NSString*)jsonString;
-(NSData*) asJSONdata;
-(NSString*) asJSON;
@end
php方面:

   $content = file_get_contents('php://input');
   $ary     = json_decode($content , false); // false means as stdObj as opposed to array

编辑:MPLOG是一个个人日志框架,您应该用它代替NSLog或您当前使用的任何东西。

我通常会将“普通旧”对象序列化为JSON(iOS端),发布JSON和php端,解码JSON。我为字典编写了一个类别,如下所示(您可以将其用作NSArray+JSON类别的模板,应该几乎相同)

NSDictionary+JSON.h:

#import <Foundation/Foundation.h>

@interface NSDictionary (JSON)
+(id) dictionaryWithJSONdata:(NSData*)jsonData;
+(id) dictionaryWithJSON:(NSString*)jsonString;
-(NSData*) asJSONdata;
-(NSString*) asJSON;
@end
php方面:

   $content = file_get_contents('php://input');
   $ary     = json_decode($content , false); // false means as stdObj as opposed to array

编辑:MPLOG是一个个人日志框架,您应该替代NSLog或您当前使用的任何东西。

一种常见做法是使用JSON。这是您为RESTAPI编码数据的方式


但是你可以做任何你喜欢的事。最重要的是您能够获取数据。

常用的做法是使用JSON。这是您为RESTAPI编码数据的方式

但是你可以做任何你喜欢的事。最重要的是你能够获得数据

  • 选择已建立的序列化格式,不要尝试使用自己的格式。
    • 已建立的格式具有预先编写的库来处理复杂类型编码和封装/转义字符串/数据之类的事情
  • 选择一种定义良好且两端都支持的序列化格式,即IOS/ObjC和PHP。
    • 您不想浪费时间编写新的库来实现不受支持的格式
  • 不要将序列化数据存储在RDBMS中,尤其是MySQL中。
    • 存储、访问、索引等都变得困难或不可能做好
    • 如果您只是在寻找键值存储,那么有比MySQL更好的选择
  • 也就是说,有两种突出的候选格式:

    • JSON:现代互联网的通用语言。简单、轻便、灵活,几乎所有东西都能理解它
    • XML:JSON臃肿的叔叔。笨重的,冗长的,通常是一个巨大的痛苦的屁股;但是,如果您想在数据交换格式上强加类型、结构和其他类似的东西,您可能会比XML做得更糟
    从总体上看,您所描述的内容与定义RESTAPI的情况完全相同

  • 选择已建立的序列化格式,不要尝试使用自己的格式。
    • 已建立的格式具有预先编写的库来处理复杂类型编码和封装/转义字符串/数据之类的事情
  • 选择一种定义良好且两端都支持的序列化格式,即IOS/ObjC和PHP。
    • 您不想浪费时间编写新的库来实现不受支持的格式
  • 不要将序列化数据存储在RDBMS中,尤其是MySQL中。
    • 存储、访问、索引等都变得困难或不可能做好
    • 如果您只是在寻找键值存储,那么有比MySQL更好的选择
  • 也就是说,有两种突出的候选格式:

    • JSON:现代互联网的通用语言。简单、轻便、灵活,几乎所有东西都能理解它
    • XML:JSON臃肿的叔叔。笨重的,冗长的,通常是一个巨大的痛苦的屁股;但是,如果您想在数据交换格式上强加类型、结构和其他类似的东西,您可能会比XML做得更糟

    从总体上看,您所描述的内容与定义RESTAPI的情况完全相同。

    JSON是最好的。JSON与字符串相同,但可以通过两种方式轻松转换为数组。您需要在HTTPStar中编码json,分隔符是一种相当非正统的格式。您可能想发布一个JSON文档。JSON是最好的。JSON与字符串相同,但可以通过两种方式轻松转换为数组。您需要在HTTPStar中编码json,分隔符是一种相当非正统的格式。您可能想发布一个JSON文档。