2016-10-20 2 views
0

私はJSON配列を作成するphp関数を持っています。これをWebサービスにポストします。この関数は正常に機能しますが、Webサービスは私にいくつかの問題を与えています。JSONをクラスにデコードしてからMySQLクエリに挿入する

私はjson_decodeを使用して、渡された文字列をデコードし、値をクラスに割り当てています。これはうまくいきます。私はダンプが私にこの

array(1) { ["AppointmentList"]=> array(10) { ["id"]=> string(0) "" ["MeetingId"]=> NULL ["MeetingName"]=> string(7) "derwent" ["DateTimeFrom"]=> string(13) "20th Oct 2016" ["Length"]=> string(0) "" ["Room"]=> string(4) "gere" ["Venue"]=> string(4) "gere" ["DateCreated"]=> string(10) "2016-10-20" ["DateDue"]=> string(10) "2016-10-20" ["UserId"]=> string(9) "JohnsonPa" } }

object(AppointmentList)#1 (11) { ["id"]=> string(0) "" ["MeetingId"]=> string(0) "" ["MeetingName"]=> string(0) "" ["DateTimeFrom"]=> string(0) "" ["Length"]=> string(0) "" ["Room"]=> string(0) "" ["Venue"]=> string(0) "" ["DateCreated"]=> string(0) "" ["DateDue"]=> string(0) "" ["UserId"]=> string(0) ""

["AppointmentList"]=> array(10) { ["id"]=> string(0) "" ["MeetingId"]=> NULL ["MeetingName"]=> string(7) "derwent" ["DateTimeFrom"]=> string(13) "20th Oct 2016" ["Length"]=> string(0) "" ["Room"]=> string(4) "gere" ["Venue"]=> string(4) "gere" ["DateCreated"]=> string(10) "2016-10-20" ["DateDue"]=> string(10) "2016-10-20" ["UserId"]=> string(9) "JohnsonPa" } }

を与える予定のリストが移入さ

$obj = json_decode($json, true); 
$classObj = new AppointmentList(); 
foreach ($obj as $key => $value) 
    $classObj->{$key} = $value; 

var_dump($json); 
var_dump($obj); 
var_dump($classObj); 

をデコードして、私のクラスに割り当てるには、次を使用しています。

私の問題は、このデータをSQLクエリに入れることです。私は($ classObj - > AppointmentList - > MeetingName、$ classObj。['MeetingName'] etc etcなど)データを取得するためのさまざまな方法を試しました。すべてのショーで。

このデータをSQLクエリに挿入する方法を教えてください。 (間違っている)私の現在の一つは、私があなたの代わりに$query$classObj['Venue']で、それは$classObj['AppointmentList']['Venue']

+1

してください、すべての状況下で、https://xkcd.com/327/およびHTTPを読む時間がかかります。可能であれば、より多くの研究を行いますが、それにもかかわらず、コードを任意のインターネットサーバーに展開しないでください。コードを消毒する前に、インターネットサーバーに展開しないでください。ありがとうございました! –

+0

PDOとプリペイドド・ステートメントを使用するようにスクリプトを変更する必要がある場合は、アップヴォートを贈呈します。http://php.net/manual/en/pdo.prepared-statements.php –

+0

コードは取得前に十分に浄化されますこの段階に:) – Nodoid

答えて

0

のように見えます。あなたのクラス 'AppointmentList'では、ループ内で設定している属性を取得するいくつかのメソッドを定義する必要があります。あなたのデータベースにこの情報を挿入する際

その後、あなたはこのようにそれにアクセスすることができます。

$query = "REPLACE INTO AppointmentList (id, MeetingId,...etc...) VALUES ('"$classObj->get_id()."', ".$classObj->get_MeetingId()."');"; 

をあなたがそれらを複数持っているつもりなら内にオブジェクトを配置する配列を作成します。そして、あなたはこのようなあなたのデータベースにそれらを読み込むことができます:// PHP:

for($i=0; $i<sizeof($somearray);$i++){ 
$query = "REPLACE INTO AppointmentList (id, MeetingId,...etc...) VALUES ('"$somearray[$i]->get_id()."', ".$somearray[$i]->get_MeetingId()."');"; 
//SQL PDO insertion here 

}

+0

あなたは思いますか?あなたは確信していませんか? –

+0

私は考えていると私は分からない – CptMisery

0

あなたの$ classObjがオブジェクトではなく、配列であるべきだと思う。この

$query = "REPLACE INTO AppointmentList (id, MeetingId, MeetingName, DateTimeFrom, Length, Room, Venue, DateCreated, DateDue, UserId) VALUES (".$classObj['id'].", ".$classObj['MeetingId'].", '".$classObj['MeetingName']."', '".$classObj['DateTimeFrom']."', ".$classObj['Length'].", '".$classObj['Room']."', '".$classObj['Venue'].", STR_TO_DATE(".$classObj['DateCreated'].", '%Y%m%d'), STR_TO_DATE(".$classObj['DateDue'].", '%Y%m%d'), '".$classObj['UserId']."');"; 
関連する問題