错误查询SQL在PHP中解析XML

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误查询SQL在PHP中解析XML相关的知识,希望对你有一定的参考价值。

尝试遍历xml并在数据库中插入每个节点时出现以下错误。

注意:尝试获取非对象的属性

错误的行是这些:

$ ninv = $ obra-> ninventario。“/”。$ obra-> ncatalogo;

$ query =“INSERT INTO bcfichaninvcontratodesctecnicapiezadimenlochabubicacion)VALUES('。$ ninv。”','“。$ obra-> contract。”','“。 $ obra-> title。'','“。$ obra-> tecnica。”','“。$ obra-> type。”','“。$ obra-> medidas_con_marco。'','”。$ obra - > localization_habitual。“,'”。$ obra-> ultima_localizacion。“');”;

XML文件完美地完成了它,因为我有一个echo和一个节点的参数comporbado。

我不知道与BD的连接是否存在问题,我认为不是,或者这是另一种类型的问题。

<?php

$fichero = "./obras.xml";
if(!$xml = simplexml_load_file($fichero))
{
    echo "No se ha podido cargar el archivo <br>";
} 
else 
{
    echo "El archivo se ha cargado correctamente <br>";
}

include"./conectar.php";
$enlace= conectarse();

foreach ($xml as $obra)
{
    $obra = (array) $obra;
    $ninv= $obra->ninventario."/".$obra->ncatalogo;

    $consulta ="INSERT INTO `bcficha` (`ninv`, `contrato`, `desc`, `tecnica`, `pieza`, `dimen`, `lochab`, `ubicacion`) VALUES ('".$ninv."','".$obra->contrato."','".$obra->titulo."','".$obra->tecnica."','".$obra->tipo."','".$obra->medidas_con_marco."', '".$obra->localizacion_habitual.", '".$obra->ultima_localizacion."'); ";

    $resultado= mysqli_query($enlace,$consulta) or die (mysqli_error);
    if ($resultado)
    {
        echo ("Base de datos caragda correctamente<br>");
    }
    else
    {
        echo ("Eror cargando base de datos<br>");
    }   
}    
?>

和conectar.php

<?php

    function conectarse()
    {
       if (!($conexion=mysql_connect("localhost","root","")))
       {
          echo "Error conectando a la base de datos<br>";
          exit();
       }

        if (mysql_select_db("db1", $conexion)) 
       {
           echo("<br>Conectado !!!<br>");
       }
       else
       {
            echo("Fallo al conectar<br>");
       }

       return $conexion;
    }

?>

非常感谢你的帮助。

答案

您已将$obra转换为数组:

foreach ($xml as $obra)
{
    $obra = (array) $obra;
[...]

所以你需要将该变量用作数组:

$ninv = $obra['ninventario'] . '/' . $obra['ncatalogo'];

等等。

另一答案

我认为你的问题是$obra$obra不是一个对象。一个数组

以上是关于错误查询SQL在PHP中解析XML的主要内容,如果未能解决你的问题,请参考以下文章

用DOM解析XML ,用xpath快速查询XML节点

如何在 sql 查询中插入 php 变量?

mybatis-基于xml的多表查询

PHP中用simpleXML解析XML文档,为啥总出错?

在 PHP 中执行大型 SQL 查询字符串时出现“内存不足”错误

php 输出 xml 产生解析错误“'”