2017-05-15 17 views
1

私はPHPを初めて使用しています。私はpostにjson文字列を送ります。そのjson文字列は製品の配列リストです。私はアンドロイドからphp webserviceに送るでしょう。デコード後に配列をvar_dumpするとnullが表示されます。ここでPHP:データベースにjsonの文字列を挿入できません。

は私のコード

<?php 

$servername = "mysql.hostinger.in"; 
$username = "username"; 
$password = "password"; 
$dbname = "db_name"; 

$conn = new mysqli($servername, $username, $password, $dbname); 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$orderDetails = mysqli_real_escape_string($conn, $_POST['orderDetails']); 
$name = mysqli_real_escape_string($conn, $_POST['name']); 
$refNo = mysqli_real_escape_string($conn, $_POST['refNo']); 
$date = mysqli_real_escape_string($conn, $_POST['date']); 
$amount = mysqli_real_escape_string($conn, $_POST['amount']); 

$objs = json_decode($orderDetails, true); 

//var_dump($objs); 

$sql = "INSERT INTO tblOrder (name, refNo, date, quality, design, qty, pcs, amount) values ('$name', '$refNo', '$date', 'mix quality', 'mix design', '1250', '2', '$amount')"; 
mysqli_query($conn, $sql); 
$orderId = mysqli_insert_id($conn); 

if(is_array($objs) || is_object($objs)){ 
foreach($objs as $item) { 
    $sql2 = "INSERT INTO tblOrderDetails (orderId, quality, design, shade, quantity, rate) 
     VALUES ('$orderId', '".$item['qualityName']."', '".$item['designName']."', '".$item['name']."','".$item['pcs']."', '".$item['amount']."')"; 

     mysqli_query($conn, $sql2); 
    } 
} 

mysqli_close($conn); 
?> 

されており、ここで私はポストにorderDetailsとして渡しています私のJSON文字列です。

[ 
    { 
    "amount": "1000", 
    "qualityName": "Cotton", 
    "designName": "11001", 
    "discPercent": "5", 
    "image": "http://website.com/Demo/images/1.jpg", 
    "name": "Black", 
    "position": 0, 
    "pcs": 3, 
    "id": 1 
    }, 
    { 
    "amount": "900", 
    "qualityName": "Cotton", 
    "designName": "11001", 
    "discPercent": "9", 
    "image": "http://website.com/Demo/images/2.jpg", 
    "name": "Green", 
    "position": 0, 
    "pcs": 2, 
    "id": 2 
    } 
] 

android私はVolley Libraryを使用してデータを投稿しています。

私に何かお勧めします。

+0

JSONデータをPOSTデータとしてどのように送信していますか?例えば標準フォームの提出、AJAXリクエストなど?これらの詳細を含めるには、投稿を[編集](http://stackoverflow.com/posts/43984520/edit)してください。 –

+0

「Volley Library」 –

答えて

2

$_POST['orderDetails']にアクセスしているJSONは有効です(質問の最後に投稿した文字列であると仮定します)。

あなたはあなたが

$objs = json_decode($orderDetails, true); 

で最初にそれをデコードして、SQL文字列を構築する際foreachループに各プロパティをエスケープする必要があり

$orderDetails = mysqli_real_escape_string($conn, $_POST['orderDetails']); 

でそれを無効にしているしかし:

foreach($objs as $item) { 
    $qualityName = mysqli_real_escape_string($conn, $item['qualityName']); 
    $designName = mysqli_real_escape_string($conn, $item['designName']); 
    /* ... */ 

    $sql2 = "INSERT INTO tblOrderDetails (orderId, quality, design, shade, quantity, rate) 
     VALUES ('$orderId', $qualityName, $designName, .......)"; 

    mysqli_query($conn, $sql2); 
} 

重要な注意:

非常に使用するようにreccomendedされる代わりに、データをエスケープして、文字列を結合して、クエリを構築するprepared statements

コードは読みやすく、エラーが発生しにくく、SQLインジェクションの対象になりません。

+0

を使ってアンドロイドから送信してくれてありがとう。 –

関連する問題