【问题标题】:PHP inserting XML prices into SQL table - SQL syntax error [duplicate]PHP将XML价格插入SQL表 - SQL语法错误[重复]
【发布时间】:2017-01-12 08:28:40
【问题描述】:

我是 StackOverflow 的新手。希望我的提问是正确的。

我正在尝试将来自外部 XML (URL) 的数据插入到 SQL 表中,但我得到:

错误:INSERT INTO 'table_name' ('price')VALUE ('5.95') 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解要使用的正确语法 靠近第 1 行的 ''BBB' ('price')VALUE ('5.95')'

我能够从 XML 中 ECHO 和 PRINT 值,也能够将非 xml 值插入到表中。我使用的代码是:

<?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();
?>

如果有人可以帮助我解决这个问题,那就太好了。我感觉我已经很接近了……

【问题讨论】:

  • 反引号和引号不是一回事
  • ('price')VALUES之间不应该有空格吗?

标签: php mysql sql-server insert mariadb


【解决方案1】:

据我所知,对于 MariaDB,您必须使用反引号来“引用”对象的名称。

试试这样:

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

如果您不处理危险的对象名称,您可能只使用

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

【讨论】:

  • 你好,Shnugo!谢谢你的工作!
  • 嗨,Shnugo。再次感谢您的回答。我现在偶然发现它只将一个值导入 SQL 数据库。您能否详细说明如何对 XML 中所有可能的行重复此 $sql 查询?我一直在想办法解决这个问题,但在任何地方都找不到。
【解决方案2】:

如果您的价格正确,那么您应该检查您的查询 前任。 INSERT INTO table_name (price) VALUES ('$price')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-25
    • 2016-08-17
    • 1970-01-01
    • 2014-05-25
    • 2011-07-31
    • 2015-03-16
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多