Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript+;用于在Wordpress中访问MySQL数据库的PHP_Php_Javascript_Mysql_Wordpress - Fatal编程技术网

JavaScript+;用于在Wordpress中访问MySQL数据库的PHP

JavaScript+;用于在Wordpress中访问MySQL数据库的PHP,php,javascript,mysql,wordpress,Php,Javascript,Mysql,Wordpress,首先,我要感谢StackOverflow社区对我的帮助。谢谢 正如您在我的网站上看到的,我是新使用Wordpress、JavaScript和PHP的人(对于我的工作,我对SQL有一些了解),我在一些“简单”方面发现了一些困难。我一直在寻找这个问题的答案,但我还没有找到,所以如果有人能为我指出一些方向,我将非常感激。交易如下: 正如您所看到的,我有一个非常简单的公式集,我只想用我自己的SQL查询将数据保存在MySQL数据库的一个表中。它与使用Wordpress的数据库相同。我看了很多,找到了一种用

首先,我要感谢StackOverflow社区对我的帮助。谢谢

正如您在我的网站上看到的,我是新使用Wordpress、JavaScript和PHP的人(对于我的工作,我对SQL有一些了解),我在一些“简单”方面发现了一些困难。我一直在寻找这个问题的答案,但我还没有找到,所以如果有人能为我指出一些方向,我将非常感激。交易如下:

正如您所看到的,我有一个非常简单的公式集,我只想用我自己的SQL查询将数据保存在MySQL数据库的一个表中。它与使用Wordpress的数据库相同。我看了很多,找到了一种用PHP+Javascript实现这一点的“简单”方法。这里的说明很清楚

  • 将此文件(mysqlwslib.js)放在脚本文件夹中(在我的例子中是我的主题文件夹中的“js”文件夹):
  • -

    我的问题是它不能保存任何东西。当我按下按钮(Liberar!!!)时,公式集将以正确的PHP方向重新加载,但在DB中我找不到新行。最后一个必须显示结果的“警报”也不会弹出。。。你可以看到处方集。我知道执行会到达这个方法,因为如果第一个警报没有注释,它会显示变量,但是当它尝试执行查询时,页面会重新加载,并且不会保存任何内容

    有人能指出我的错误吗?如何查看结果消息?有没有其他方法可以使用您自己的SQL查询?这个公式集是项目的一部分,我需要使用自己的SQL查询来访问、处理和保存数据


    非常感谢您的时间和帮助。

    您不应该在JS文件中构建SQL查询。 而应该放在PHP文件中。从JS调用PHP文件,然后从PHP文件调用SQL server。 这对安全性更好,并且更易于调试

    首先尝试一下,然后检查日志是否有语法错误

    如果您选择忽略此建议(我强烈建议您不要这样做),您可以通过查看浏览器控制台进一步调试此建议

    要在php中对此进行调试,请首先启用error_reporting以捕获任何不需要的语法错误,然后尝试以下几行:

    $mysqli = new mysqli("example.com", "user", "password", "database");
    
    /* check connection */
    if ($mysqli->connect_errno) {
        printf("Connect failed: %s\n", $mysqli->connect_error);
        exit();
    }
    
    if (!$mysqli->query($query)) {
        printf("Errormessage: %s\n", $mysqli->error);
    }
    
    /* close connection */
    $mysqli->close();
    

    记得在一切正常后关闭错误报告。

    好的,我将尝试将查询移动到php文件。这将如何帮助我调试?我是说,如果我犯了错误,它会显示在哪里?非常感谢您,您可以轻松访问php文件,并在每次访问时手动触发SQL查询。如果你有错误报告,你会在屏幕上直接打印错误。
    <?php
    header('Content-Type: text/xml');
    header("Cache-Control: no-store, no-cache, must-revalidate");
    
    // Los valores $host, $user, $pw, $db se deben de adaptar a cada instalación
    $host="localhost";
    $user=*{MyUser}*;
    $pw=*{MyPass}*;
    // Indicar el nombre de una base de datos que se abrirá por defecto
    $db=*{MyDBName}*;
    
    
    if(isset($_GET['c']) and isset($_GET['p'])) {
        $command=$_GET['c'];
        $params = $_GET['p'];
        if(isset($_GET['db'])) {
            $db = $_GET['db'];
        }
        $resp = processcommand($command, $params);
    } else {
        $resp=createResponse(0, "ERROR", "Parametros HTTPGET incorrectos");
    }
    echo $resp;
    return;
    
    function processCommand($command, $params) {
        // processCommand
        // procesa un comando válido recibido en la llamada a la página. 
        // Es llamado desde el flujo principal
        // Distribuye el trabajo a la rutina correspondiente y
        // devuelve una respuesta en formato xml
    
        // Declarar la respuesta
        $respxml=null;
    
        // Derivar a la rutina adecuada
        if(strcmp("updateQuery",$command)== 0) {
            $respxml=updateQuery($params);
        } else if (strcmp("selectQuery",$command)==0) {
            $respxml=selectQuery($params); 
        } else if (strcmp("getColNames",$command)==0) {
            $respxml=getColNames($params); 
        } else {
            $respxml=createResponse(0,"ERROR","El comando no existe");
        }
    
        return $respxml;
    }
    
    
    function updateQuery($query) {
    // Ejecuta un comando tipo UPDATE, INSERT, DELETE,... en la base de datos
    // $query = String con el comando   
    // devuelve: xmlresponse con el resultado
    
        GLOBAL $host, $user, $pw, $db;
    
        // Abrir la conexión con mysql
        $conn = opendb($host, $user, $pw, $db);
        if(!$conn) {
            return createResponse(-2,"ERROR","Error de conexión.-$conn");
        }
    
    
        // Realizar la consulta a la B.D.
        $result=mysql_query($query, $conn);
    
        $ar = mysql_affected_rows();
    
        $cod = 0;
        $text ="ERROR";
        $desc ="-1";
    
        if($result == true) {
            $cod = 0;
            $text ="OK";
            $desc =$ar; 
        }
        $response = createResponse($cod,$text,$desc);
    
        // Cerrar la conexión
        closedb($conn);
    
        // Devolver el resultado
        return $response;
    };
    
    function selectQuery($query) {
    // Ejecuta un comando tipo SELECT en la base de datos
    // query = String con el comando    
    // devuelve: xmlresponse con el resultado
    
        GLOBAL $host, $user, $pw, $db;
    
        // Abrir la conexión con mysql
        $conn = opendb($host, $user, $pw, $db);
        if(!$conn) {
            return createResponse(-2,"ERROR","Error de conexión.-$conn");
        }
    
        // Realizar la consulta a la B.D.
        $result=mysql_query($query, $conn);
    
        if ($result) {
            $nc = mysql_num_fields($result);
    
            $cad="";
            while( $row = mysql_fetch_array($result, MYSQL_BOTH)) {
                $cad .="<item>";
                for($i=0; $i<$nc; $i++) {
                    $cad .= $row[$i];
                    if($i<$nc-1) {
                        $cad .= ",";
                    }
                }
                $cad .= "</item>";
            }
    
            mysql_free_result($result);
    
            $response = createResponse(1, "OK", $cad);
        } else {
            $response = createResponse(0, "ERROR", "Error en la llamada SQL"); 
        }
        // Cerrar la conexión
        closedb($conn);
    
        // Devolver el resultado
        return $response;
    };
    
    function getColNames($nombreTabla) {
        // Devuelve un array con los nombres de las columnas de la 
        // tabla pasada como argumento
        // Si error devuelve array nulo;    
    
        // Establecer las variables globales
        GLOBAL $host, $user, $pw, $db;
    
        // Abrir la conexión con mysql
        $conn = opendb($host, $user, $pw, $db);
        if(!$conn) {
            return createResponse(-2,"ERROR","Error de conexión.-$conn");
        }
    
        // Realizar la consulta a la B.D.
        $query = "SELECT * FROM $nombreTabla";
        $result=mysql_query($query, $conn);
        if ($result) {
    
            $numcols = mysql_num_fields($result);
    
            $resp = "";
            for($i=0; $i< $numcols; $i++) {
                $resp .= mysql_field_name($result, $i);
                if($i < $numcols-1) {
                    $resp .= ",";
                }   
            }
            mysql_free_result($result);
            $response = createResponse(1, "OK", $resp);
    
        } else {
            $response = createResponse(0, "ERROR", "Error en acceso SQL");
    
        }
    
    
        // Cerrar la conexión
        closedb($conn);
    
        // Devolver el resultado
        return $response;
    };
    
    function opendb($host, $user, $pw, $db) {
        // opendb
        // Establece conexión con el servidor $host y hace un USE de la base de datos $db
        // Parametros:
        //    $host
        //    $user
        //    $pw : password
        //    $db : Base de datos sobre la que se hará el USE 
        // Devuelve:
        //    Referencia a la conexión abierta o null si hay errores
        //
        $conn = mysql_connect($host, $user, $pw);
        if(!$conn) {
            return null;
        }
        //echo "connected<br/>";
        $resp = mysql_select_db($db, $conn);
        if($resp != true) {
            return null;
        }
        //echo "used<br/>";
        return $conn;
    };
    
    function closedb($conn) {
        // closedb()
        // Cierra la conexión con la base de datos
        // Parámetros:
        //     $conn Referencia al recurso de la conexión con la B.D.
        // Devuelve
        //     void
        if(!$conn) {
            return;
        }
        mysql_close($conn);
    };
    
    function createArrayFromCadParams($cadParams) {
        // Recibe como entrada la cadena de parametros separados por comas
        // y devuelve un Array con los parametros separados
        $arrayParams=array();
        if (strlen($cadParams)!=0) {
            if(strpos($cadParams, ',')>0) {
                $arrayParams =  explode(',',$cadParams);
            } else {
                $arrayParams[0]=$cadParams;
            }
        }
        return $arrayParams;
    };
    
    function createResponse($code, $text, $content) {
        // createResponse($code, $descrip, $content)
        //      Genera un documento XML del tipo <regataResponse>.
        //      (Ver su constitución en la documentación del programa)
        // Parámetros:
        //
        // Devuelve:
        //
        $doc=new DOMDocument('1.0');
        $cadxml="<wsResponse>";
        $cadxml=$cadxml."<statusCode>$code</statusCode>";
        $cadxml=$cadxml."<statusText>$text</statusText>";
        $cadxml=$cadxml."<content>$content</content>";
        $cadxml=$cadxml."</wsResponse>";
        $doc->loadXML($cadxml);
        return $doc->saveXML();
    };
    
    function createResponseFromCode($code) {
        // createResponseFromCode($code)
        //      Genera un documento XML del tipo <wsResponse>.
        //      OK para códigos >0 y ERROR para codigos <= 0        
        // (Ver su constitución en la documentación del programa)
        // Parámetros:
        //
        // Devuelve:
        //
        $text="ERROR";
        $content = "ERROR";
        if($code>0) {
            $text="OK";
            $content ="OK";
        }
        $doc=new DOMDocument('1.0');
        $cadxml="<wsResponse>";
        $cadxml=$cadxml."<statusCode>$code</statusCode>";
        $cadxml=$cadxml."<statusText>$text</statusText>";
        $cadxml=$cadxml."<content>$content</content>";
        $cadxml=$cadxml."</wsResponse>";
        $doc->loadXML($cadxml);
        return $doc->saveXML();
    };
    ?>
    
    <script src="mysqlws.js"></script>
    
    function liberar()
      {
        var SQLguardar = null;
        var fecha = new Date();
        var indice = null;
        //Compruebo si existe dirección en el formulario
        //Esto es necesario porque si no han introducido una no se cambiarán las coordenadas.
        if(document.getElementById("direccion").value !='')
        {
    
            txtDireccion = document.getElementById("direccion").value;
            txtObservaciones = document.getElementById("observaciones").value;
            txtNumRev = document.getElementById("numerorevista").value;
            txtLat = document.getElementById("lat").value;
            txtLng = document.getElementById("long").value;
    
            //alert ("Comenzando Guardado. Datos: "+txtDireccion+", "+txtObservaciones+", "+txtNumRev+", "+txtLat+", "+txtLng+".");
    
            //Definimos la consulta que guardará el nuevo punto
    
            SQLguardar = "INSERT INTO wp_leafletmapsmarker_markers (markername, basemap, layer, lat, lon, icon, popuptext, zoom, openpopup, mapwidth, mapwidthunit, mapheight, panel, createdby, createdon, updatedby, updatedon, controlbox, overlays_custom, overlays_custom2, overlays_custom3, overlays_custom4, wms, wms2, wms3, wms4, wms5, wms6, wms7, wms8, wms9, wms10, kml_timestamp, address) VALUES ('Ecléctica nº "+ txtNumRev+"', 'osm_mapnik', 3, "+ txtLat +", "+ txtLng+", 'text.png', '"+txtObservaciones+"', 17, 0, 640, 'px', 480, 0, 'revista','"+ fecha.getFullYear()+"/"+fecha.getMonth()+"/"+fecha.getDate()+"', NULL, NULL, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, '"+txtDireccion+"');";
    
            mysql_use("localhost",*{MyDBUser}*,*{MyDBPass}*,*{MyDBName}*);
    
            var arrayResult = mysql_update_query(SQLguardar);
    
            alert ("Resultado: "+arrayResult[0]);   
    
        }else alert ("ATENCION: No se ha introducido una Direcci"+'\u00f3'+"n.  Por favor introduzca una direcci"+'\u00f3'+"n, pulse 'Pasar al mapa' y afine la localizaci"+'\u00f3'+"n con el marcador");
    
      }
    
    $mysqli = new mysqli("example.com", "user", "password", "database");
    
    /* check connection */
    if ($mysqli->connect_errno) {
        printf("Connect failed: %s\n", $mysqli->connect_error);
        exit();
    }
    
    if (!$mysqli->query($query)) {
        printf("Errormessage: %s\n", $mysqli->error);
    }
    
    /* close connection */
    $mysqli->close();