简体   繁体   English

错误查询SQL分析PHP中的XML

[英]Error query SQL parsing XML in PHP

I get the following error trying to traverse the xml and inserting each node in the DB. 我在尝试遍历xml并将每个节点插入数据库中时遇到以下错误。

Notice: Trying to get property of non-object 注意:试图获取非对象的属性

the lines of the error are these: 错误行如下:

$ninv= $obra->ninventario."/".$obra->ncatalogo; $ 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."'); "; $ CONSULTA = “INSERT INTO bcfichaninvcontratodesctecnicapiezadimenlochabubicacion )VALUES(”“。$ NINV ” ''。“ $ obra-> contrato ” ''。“ $ obra-> titulo。“','”。$ obra-> tecnica。“','”。$ obra-> tipo。“','”。$ obra-> medidas_con_marco。“ ,,”。$ obra -> localizacion_habitual。“,'”。$ obra-> ultima_localizacion。“');”;

The XML file goes through it perfectly because I have comporbado with an echo and one of the parameters of the node. XML文件完美地通过了它,因为我具有带有回声和节点参数之一的comporbado。

I do not know if it's a problem with the connection with the BD, which I think not, or it's a problem of another type. 我不知道与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>");
    }   
}    
?>

and conectar.php 和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;
    }

?>

Thank you very much for the help. 非常感谢你的帮助。

You have converted $obra to an array here: 您已将$obra转换$obra数组:

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

so you need to use that variable as an array: 因此您需要将该变量用作数组:

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

and so on. 等等。

我认为您的问题是$obra$obra不是object.its数组

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM