3

ExtJS インターフェイスから PHP に POST'ING している JSON オブジェクトがあります。からオブジェクトを取得します

$json = $_POST["newUserInfo"];

オブジェクトには 3 つの配列が含まれます。

var_dump(json_decode($json));

各配列を取得し、それらから SQL クエリを作成する必要があります。私の最初の障害は、オブジェクトから配列を取得することですが、これは不要かもしれません。これが私が取り組んでいるコードブロックです:

/*Variable passed in from the ExtJS interface as JSON object*/
$json = $_POST["newUserInfo"];
//$json = '{"USER":{"ID":"","FULL_USER_NAME":"Some Guy","ENTERPRISE_USER_NAME":"guyso01","USER_EMAIL":"Some.Guy@Email.com","USER_PHONE":"123-456-7890"},"PERMISSIONS":{"ID":"","USER_ID":"","IS_ADMIN":"true"},"SETTINGS":{"ID":"","USERS_ID":"","BACKGROUND":"default"}}';

//Test to view the decoded output
//var_dump(json_decode($json));

//Decode the $json variable
$jsonDecoded = json_decode($json,true);

//Create arrays for each table from the $jsonDecoded object
$user_info = array($jsonDecoded['USER']);
$permissions_info = array($jsonDecoded['PERMISSIONS']);
$settings_info = array($jsonDecoded['SETTINGS']);  

配列を正しく作成していません。私も試してみました

$user_info = $jsonDecoded->USER;

それもうまくいきません。ここで何か簡単なことを見逃していると確信しています。繰り返しますが、おそらく直接アクセスできるので、これは不要かもしれません。配列をループし、各キーを文字列に追加し、各値を文字列に追加して、クエリを作成する必要があります。だから私は次のようなものになってしまうだろう

$query = "INSERT INTO USERS ($keyString) VALUES ($valueString);

次に、PERMISSIONS 配列と SETTINGS 配列に対して同じプロセスを繰り返します。これはおそらく単純ですが、ここで立ち往生しています。

4

1 に答える 1

24

使用している場合json_decode($json,true);- true は js オブジェクトの結果を連想配列として返すことを意味します - その場合、あなたがしなければならないことは、キャストの原因が$user_info = $jsonDecoded['USER'];なくてもかまいません。array()json_decode

2 番目のブール値パラメーターを省略することを選択した場合は、適切に機能する stdClass が取得さ$jsonDecoded->USER;れます。

于 2013-04-29T18:08:10.940 に答える