2017-01-12 11 views
0

私はStackOverflowで新しくなった。私は正しく質問をしていることを願っています。PHPはXMLの価格をSQLテーブルに挿入する - SQL構文エラー

私はSQLテーブルに外部のXML(URL)からのデータを挿入しようとしているが、私は得る:

Error: INSERT INTO 'table_name' ('price')VALUE ('5.95') You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''BBB' ('price')VALUE ('5.95')' at line 1

私もにできECHOすることができるよとPRINT値XMLからと非xml値をテーブルに挿入します。私が使用しているコードは次のとおりです。誰かがこの1に私を助けることができるかどう

<?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("external_xml_url") or die("Error: Cannot create object"); 

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

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

} 

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

$conn->close(); 
?> 

は素晴らしいことです。私はかなり近づいていると感じています...

+1

バッククォートと引用符に対処していない場合は

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

は – Strawberry

+0

が存在しないはず同じものではありません'( 'price')'と 'VALUES'の間のスペース? – Kleskowy

答えて

0

私が知る限り、MariaDBでは、オブジェクトの名前を「qoute」するためにBackticksを使用する必要があります。

このようにそれを試してみてください:あなたが使用する可能性のある危険なオブジェクト名だけ

$sql = "INSERT INTO table_name (price) VALUES ('$price')"; 
+0

こんにちは!ありがとうございました! – Hn3M

+0

こんにちは。もう一度答えに感謝します。私は今、SQLデータベースに1つの値しかインポートしないという事実に悩まされています。おそらく、XMLのすべての可能な行に対してこの$ sqlクエリを繰り返す方法を詳しく教えてください。私はこれを理解しようとしてきましたが、それをどこにも見つけることはできません。 – Hn3M

-1

あなたの価格が適切であれば、質問を確認してください。 Ex。 INSERT INTO table_name(price)VALUES( '$ price')