<?php
$databasehost = "host";
$databasename = "libros";
$databaseusername ="root";
$databasepassword = "1234";
$con = mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
mysql_set_charset("utf8");
mysql_select_db($databasename) or die(mysql_error());
$query = file_get_contents("php://input");
$sth = mysql_query($query);
if (mysql_errno()) {
header("HTTP/1.1 500 Internal Server Error");
echo $query.'\n';
echo mysql_error();
}
else
{
$rows = array();
while($r = mysql_fetch_assoc($sth)) {
$rows[] = $r;
}
print json_encode($rows);
}
?>
Hola cuellar!Bueno, el mismo mensaje de advertencia te está dando la respuesta. Modifica tu php y usa MySqli, no tienes que cambiar nada más.
Hola cuellar, no consigo que conecte. Las funciones cambian y unas tienen más parámetros otras menos pero como no sé lo que estoy haciendo pues la voy liando más y más. Todos son mensajes de que expected 2 parameters, etc...Bueno, el mismo mensaje de advertencia te está dando la respuesta. Modifica tu php y usa MySqli, no tienes que cambiar nada más.
<?
$databasehost = "host";
$databasename = "db";
$databaseusername = "user";
$databasepassword = "pass";
$con = mysqli_connect($databasehost,$databaseusername,$databasepassword,$databasename) or die(mysqli_error());
mysqli_select_db($con, $databasename) or die(mysqli_error());
mysqli_query($con, "SET CHARACTER SET utf8");
$query = file_get_contents("php://input");
$sth = mysqli_query($con, $query);
if (mysql_errno()) {
header("HTTP/1.1 500 Internal Server Error");
echo $query.'\n';
echo mysqli_error();
}
else
{
$rows = array();
while($r = mysqli_fetch_assoc($con, $sth)) {
$rows[] = $r;
}
print json_encode($rows);
}
?>
Gracias wistong,...
if (mysql_errno()) { // Puede ser el error ----> (mysqli_errno())
header("HTTP/1.1 500 Internal Server Error");
echo $query.'\n';
echo mysqli_error();
}
...
<?php
$host = "server";
$user = "usuario";
$pw = "password";
$db = "db";
$conn = new mysqli($host, $user, $pw, $db);
/* verificar la conexión */
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
/* cambiar el conjunto de caracteres a utf8 */
if (!$conn->set_charset("utf8")) {
printf("Error cargando el conjunto de caracteres utf8: %s\n", $mysqli->error);
exit();
}
$result = $conn->query($sql);
$SQL = $_GET["SQL"];
$SQL_SEPARADO = explode(";", $SQL);
for($i = 0 ;$i<count($SQL_SEPARADO);$i++) {
if ($SQL_SEPARADO[$i]!='') {
$pre = $conn->query($SQL_SEPARADO[$i]);
if ($pre->num_rows > 0) {
$rows = array();
while($r = $pre->fetch_assoc()) {
$rows[] = $r;
}
}
}
}
print json_encode($rows);
?>
Yo utilizo este y me funciona de maravilla, bueno hice yo mismo el código, puedes sacar ideas de este código.
B4X:<?php $host = "server"; $user = "usuario"; $pw = "password"; $db = "db"; $conn = new mysqli($host, $user, $pw, $db); /* verificar la conexión */ if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } /* cambiar el conjunto de caracteres a utf8 */ if (!$conn->set_charset("utf8")) { printf("Error cargando el conjunto de caracteres utf8: %s\n", $mysqli->error); exit(); } $result = $conn->query($sql); $SQL = $_GET["SQL"]; $SQL_SEPARADO = explode(";", $SQL); for($i = 0 ;$i<count($SQL_SEPARADO);$i++) { if ($SQL_SEPARADO[$i]!='') { $pre = $conn->query($SQL_SEPARADO[$i]); if ($pre->num_rows > 0) { $rows = array(); while($r = $pre->fetch_assoc()) { $rows[] = $r; } } } } print json_encode($rows); ?>
Hola rscheel
Gracias por tu ayuda. Me devuelve el programa un error al hacer el parse. Igual que antes. Creo que no le llega la información del sql. Antes me funcionaba perfectamente pero al cambiar del servidor me apareció lo de deprecated.
Usas HttpUtils2? O la versión antigua?
Un saludo
<?php
phpinfo();
Infinitas gracias!Utilizo el mismo HttpUtils2, verifica la versión de php de tu servidor, crea un phpinfo.php con el codigo adentro
B4X:<?php phpinfo();
y colócalo en el servidor y correlo desde el navegador.
Utilizo el mismo HttpUtils2, verifica la versión de php de tu servidor, crea un phpinfo.php con el codigo adentro
B4X:<?php phpinfo();
y colócalo en el servidor y correlo desde el navegador.
#Region Service Attributes
#StartAtBoot: True
#End Region
Sub Process_Globals
'--- These global variables will be declared once when the application starts.
'--- These variables can be accessed from all modules.
Private tmrStart As Timer
Dim hc As HttpJob
Type Renglones (Renglon1 As String, Renglon2 As String)
Dim Cambios As List
Dim UltimoRegistro,NuevoRegistro As Int
Dim PrimeraVez As Boolean
Dim s As String
End Sub
Sub Globals
End Sub
Sub Service_Create
'--- set timer to start app after 1 seconds
'--- this gives time for system to init other stuff
tmrStart.Initialize("tmrStart",10000)
PrimeraVez = True
UltimoRegistro = 0
End Sub
Sub Service_Start (StartingIntent As Intent)
'--- enabled timer
tmrStart.Enabled = True
End Sub
Private Sub Service_Destroy
End Sub
Sub tmrStart_Tick
Dim SQL As String
Dim job As HttpJob
SQL="SELECT * FROM listadocambios WHERE Activo ='S' ORDER BY Num"
ExecuteRemoteQuery(SQL,job)
End Sub
Sub ExecuteRemoteQuery(SQL As String, JobName As String)
Dim job As HttpJob
job.Initialize(JobName, Me)
job.PostString("http://linea4vlc.esy.es/linea4vlc.php", SQL)
End Sub
Sub JobDone(job As HttpJob)
If job.Success Then
Dim res As String
res = job.GetString
Dim parser As JSONParser
parser.Initialize(res)
Dim Respuesta As List
Respuesta=parser.NextArray
Log(job.JobName&"-"&res)
Select job.JobName
Case "job"
If PrimeraVez Then
Dim m As Map
Cambios.Initialize
Cambios = parser.NextArray
For i = 0 To Cambios.Size - 1
m = Cambios.Get(i)
UltimoRegistro = m.Get("Num")
Next
PrimeraVez = False
Else
Dim notificacion As Notification
notificacion.Icon = "icon"
Dim m As Map
Cambios.Initialize
Cambios = parser.NextArray
For i = 0 To Cambios.Size - 1
m = Cambios.Get(i)
NuevoRegistro = m.Get("Num")
Next
If NuevoRegistro > UltimoRegistro Then
UltimoRegistro = NuevoRegistro
ToastMessageShow("Hay cambios",True)
notificacion.SetInfo("Cambios","Hay nuevos cambios",Main)
End If
End If
End Select
End If
job.Release
End Sub
http://linkdelservirdor/tu.php?SQL=SELECT * FROM listadocambios;
Asegurate de estar usando el mismo código php que te adjunte, verifica que la conexión este bien echa, $host, $user, $pw, $db y también verifica el select que estas haciendo si estas llamando a la tabla correcta.
En el navegador anda probando el php de esta manera.
B4X:http://linkdelservirdor/tu.php?SQL=SELECT * FROM listadocambios;
Y así vas viendo lo que te devuelve una ves que tengas corregido eso sigues con la sincronizacion de la aplicación, pero como dije primero verifica que el php este haciendo lo correcto.
Y recuerda no dejar los datos de conexión al servidor, en este caso dejaste la url.
//$result = $conn->query($sql);
Si, si. Si pongo la sentencia sql en el php ya me funciona ya correctamente y me devuelve bien los datos.Y comenta esta linea en el php esta demás y es la que te envía el error.
B4X://$result = $conn->query($sql);
Sub GetData(SQL_Cadena As String, sJob As String)
Dim GetSQL As HttpJob
GetSQL.Initialize(sJob, Me)
GetSQL.download2("http://tuurlservidor/tu.php", Array As String ("SQL", SQL_Cadena))
End Sub
Sub User_PHP
GetData("SELECT * FROM tutabla" ,"GetResultado")
End Sub
Sub JobDone(Job As HttpJob)
If Job.Success Then
Dim res As String
res = Job.GetString
If res.StartsWith("{") Or res.StartsWith("[") Then
Log("Back from Job:" & Job.JobName )
Log("Job Text: " & res)
Dim parser As JSONParser
parser.Initialize(res)
Select Job.JobName
Case "GetResultado"
Dim ListDatos As List
ListaDatos = parser.NextArray 'returns a list with maps
If ListaDatos.Size == 0 Then
'Algun mensaje.
Else
For i = 0 To ListaDatos.Size - 1
Dim Datos As Map
Datos = ListaDatos.Get(i)
dato1 = Datos.Get("id")
Next
s.TransactionSuccessful
s.EndTransaction
s.Close
End If
End Select
Else
'alguna condicion
End If
Else
'ToastMessageShow("Error: " & Job.ErrorMessage, True)
End If
Job.Release
End Sub
Hola de Nuevo rscheel,Simplemente envía de esta manera.
Primero creas la conexión al php.
B4X:Sub GetData(SQL_Cadena As String, sJob As String) Dim GetSQL As HttpJob GetSQL.Initialize(sJob, Me) GetSQL.download2("http://tuurlservidor/tu.php", Array As String ("SQL", SQL_Cadena)) End Sub
Luego para pasar un SELECT por ejemplo
B4X:Sub User_PHP GetData("SELECT * FROM tutabla" ,"GetResultado") End Sub
y después para mostrar los datos recividos
B4X:Sub JobDone(Job As HttpJob) If Job.Success Then Dim res As String res = Job.GetString If res.StartsWith("{") Or res.StartsWith("[") Then Log("Back from Job:" & Job.JobName ) Log("Job Text: " & res) Dim parser As JSONParser parser.Initialize(res) Select Job.JobName Case "GetResultado" Dim ListDatos As List ListaDatos = parser.NextArray 'returns a list with maps If ListaDatos.Size == 0 Then 'Algun mensaje. Else For i = 0 To ListaDatos.Size - 1 Dim Datos As Map Datos = ListaDatos.Get(i) dato1 = Datos.Get("id") Next s.TransactionSuccessful s.EndTransaction s.Close End If End Select Else 'alguna condicion End If Else 'ToastMessageShow("Error: " & Job.ErrorMessage, True) End If Job.Release End Sub
Espero te sirva, lo que tu tienes estas enviando los datos por POST y los estas recibiendo en el php por GET si quieres seguir usando lo que tienes cambia el GET del php por REQUEST.
Hola a todos,
¿me podríais echar un cable por favor?
Resulta que estoy intentando conectar desde mi programa a una base de datos alojada en una web gratuita y me aparece el error... Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO
Yo no sé lo que tengo que hacer. Tengo que modificar mi php? Tengo que tocar sólo para la conexión pero dejo la parte de que devuelva json
B4X:<?php $databasehost = "host"; $databasename = "libros"; $databaseusername ="root"; $databasepassword = "1234"; $con = mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error()); mysql_set_charset("utf8"); mysql_select_db($databasename) or die(mysql_error()); $query = file_get_contents("php://input"); $sth = mysql_query($query); if (mysql_errno()) { header("HTTP/1.1 500 Internal Server Error"); echo $query.'\n'; echo mysql_error(); } else { $rows = array(); while($r = mysql_fetch_assoc($sth)) { $rows[] = $r; } print json_encode($rows); } ?>
Muchas gracias
Saludos
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?