2017-01-13 5 views
0

私は以下の質問に対する答えを見つけようとしていますが、解決策を見つけることができません。私はSQLテーブルに1つの製品価格を挿入することができましたが、複数の製品を試す可能性はありません。これは1つの製品のための私の作業コードです。複数のXML価格をPHPのSQLテーブルに挿入する方法

<html> 
<head> 
<meta charset="UTF-8"> 
<title>Test</title> 
</head> 

<body> 

<?php 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "dbname"; 

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

$xml=simplexml_load_file("URL") or die("Error: Cannot create object"); 

foreach ($xml->product as $row) { 
    $price = $row -> price; 

$sql = "INSERT INTO `tablename` (`price`) 
     VALUES ('$price')"; 

} 

if ($conn->query($sql) === TRUE) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$conn->close(); 
?> 


</body> 
</html> 

私はクエリが全体のXMLファイルを通過し、製品のすべての価格に見えるように追加または変更する必要がありますか?

ありがとうございます!

+0

こんにちは!準備された声明について学ぶために時間をかけてください。現状では、あなたのコードは安全ではありません。ありがとう! –

+0

私はこれに関するいくつかの情報を読んで、コードを再構築しようとしました:[リンク](http://stackoverflow.com/questions/41648694/execute-statement-for-all-xml-rows)。あなたはこのウェブサイトを私に推薦できますか?それとも、私の更新されたコードはすでに優れていますか?コード:[リンク](http://stackoverflow.com/questions/41648694/execute-statement-for-all-xml-rows) – Hn3M

+0

はい新しいコードははるかに良いです。このSOの質問を見て出発点https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq=1 –

答えて

0

mysqli :: multi_queryで行うことができます。セミコロンをSQLの最後に置いて、multi_queryで実行してください:

$sql = ""; 


foreach ($xml->product as $row) { 

    $price = $row -> price; 

    $sql .= "INSERT INTO `product` (`price`) 
     VALUES ('$price');"; 

} 


if ($conn->multi_query($sql) === TRUE) { 
    echo "News records created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 
+0

まだ1つの価格を挿入 – Hn3M

+0

申し訳ありませんが、私はsqlを開始してsql変数sqlを連結するのを忘れてしまいました。今はこれがうまくいくと思います。 – dikey

+0

1つの価格だけを挿入し続けます。 – Hn3M

関連する問題