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