Gracias Sinaloense Por tu respuesta, después de probar distintas variantes durante el fin de semana, lo que hice fue lo siguiente. Preparo las variables desde delphi y las envío a mi función php mediante el método POST, así mi función php me devuelve el resultado de una consulta, (primeramente evalúa un usuario y contraseña, para ver que tenga permiso de borrar tablas, crearlas o hacer lo que necesite), o envía ##ok## si pudo crear una tabla por ejemplo, o ##Error## si no la pudo crear. Ahí va el código delphi terminado, y la función php. Por ahí le puede ser útil a alguien. Saludos y gracias por tu tiempo.
Código Delphi
[-]
procedure TForm2.Button1Click(Sender: TObject);
var
http: TIdHttp;
params: TStrings;
respuesta: string;
Usuario, Pass, SQL:String;
begin
http := TIdHTTP.Create(Self);
params := TStringList.Create;
try
Usuario:= 'variable1='+ Edit1.text;
Pass:= 'variable2='+ Edit2.text;
SQL := 'variable3=' +SQLText.Text;
params.Add(Usuario);
params.Add(Pass);
params.Add(SQL);
respuesta := http.Post('MiWeb/PruebaConFuncion.php', params);
ShowMessage('Respuesta: ' + respuesta);
finally
http.Free;
params.Free;
Código PHP:
?php
$Usuario = $_POST['variable1'];
$Pass = $_POST['variable2'];
$SQL = $_POST['variable3'];
$SQL = stripslashes($SQL);// limpio el parametro de consulta para q no tenga ningun caracter extraño que trunque la consulta
$link = mysql_connect('localhost','root','');
if (!$link)
{
echo "error conectando la base de datos";
exit();
}
//selecciona la base de datos
$Base = mysql_select_db('Biodata',$link); // para conectarme abajo
if(!$Base)
{
echo "error seleccionando la base de datos";
exit();
}
echo "conexion conseguida \n\n";
//Valida Usuario
$Query = "SELECT * FROM `usuario` WHERE upper(`Usuario`) = upper('$Usuario') and UPPER(`Pass`) = UPPER('$Pass')";
$resultado = mysql_query ($Query,$link);
$Cantidadregistros = mysql_num_rows($resultado) ; //cuenta la cantidad de registros encontrados
if ($Cantidadregistros > 0) // si encontró algo ejecuta la consulta
{
echo "Usuario: ".$Usuario ."\n";
// echo "Contraseña: ".$Pass."\n" ;
echo "SQL: ".$SQL ."\n\n";
$SentenciaSQL = trim(substr($SQL,0,6)); //saca los primeros 6 caracteres del string y le saca los espacios en blanco Trim
if (strtoupper($SentenciaSQL) == strtoupper('select'))
{
$result = mysql_query ($SQL,$link);
if (mysql_affected_rows() > 0)
{
$nombre_archivo = "Datos.txt";
FOPEN($nombre_archivo, 'w'); // crea el archivo
while($row = mysql_fetch_array($result))
{
$Resultado= print_r( $row, true);
echo $Resultado;
//Crea el archivo TXT en donde está corriendo la funcion
$Datos_A_Ingresar = $Resultado;
$contenido = $Datos_A_Ingresar;
FOPEN($nombre_archivo, 'a+'); // edita el archivo
// Me aseguro primero de que el archivo existe y puedo escribirse sobre el.
if (is_writable($nombre_archivo)) // Abro $nombre_archivo en modo de adicion. El puntero se encuentra al final del archivo, asi que ahí es donde ira $contenido cuando llamemos fwrite().
{
if (!$gestor = fopen($nombre_archivo, 'a')) //fopen($nombre_archivo, 'a' me permite sumar texto al final del achivo
{
$A= "No se puede abrir el archivo";
exit();
}
// Escribir $contenido a nuestro arcivo abierto.
if (fwrite($gestor, $contenido) === FALSE)
{
$A= "No se puede escribir el archivo";
exit();
}
$A= "##Ok##";
fclose($gestor);
}
else { $A= "##Error## ";}
}
}
else $A ="##Error## ";
Echo $A;
}
if (strtoupper($SentenciaSQL) == strtoupper('Delete'))
{
$result = mysql_query ($SQL,$link);
// echo mysql_affected_rows().'<br>'; // devuel la cantidad de registros afectado en el alta
if (mysql_affected_rows() == -1 ){$A = '##Error##';}
if (mysql_affected_rows() == 0) {$A = '##Error##';}
if (mysql_affected_rows() > 0) {$A = '##Ok##';}
Echo $A;
exit();
}
if (strtoupper($SentenciaSQL) == strtoupper('CREATE') ) //Crea una tabla nueva
{
$result = mysql_query ($SQL,$link);
//echo mysql_affected_rows().'<br>'; // devuelve la cantidad de registros afectado en el alta
if (mysql_affected_rows() == -1 ){$A = '##Error##';}
if (mysql_affected_rows() == 0) {$A = '##Ok##';}
Echo $A;
exit();
}
if (strtoupper($SentenciaSQL) == strtoupper('DROP T') ) //Borra una Tabla
{
$result = mysql_query ($SQL,$link);
// echo mysql_affected_rows().'<br>'; // devuel la cantidad de registros afectado en el alta
if (mysql_affected_rows() == -1 ){$A = '##Error##';}
if (mysql_affected_rows() == 0) {$A = '##Ok##';}
Echo $A;
exit();
}
if (strtoupper($SentenciaSQL) == strtoupper('INSERT') ) //Alta de registros
{
$result = mysql_query ($SQL,$link);
// echo mysql_affected_rows().'<br>'; // devuel la cantidad de registros afectado en el alta
if (mysql_affected_rows() == -1 ){$A = '##Error##';}
if (mysql_affected_rows() == 0) {$A = '##Error##';}
if (mysql_affected_rows() > 0){ $A = '##Ok##';}
Echo $A;
exit();
}
if (strtoupper($SentenciaSQL) == strtoupper('UPDATE') ) //Actualiza Registros
{
$result = mysql_query ($SQL,$link);
// echo mysql_affected_rows().'<br>';
if (mysql_affected_rows() == -1 ){$A = '##Error##';}
if (mysql_affected_rows() == 0) {$A = '##Error##' ;}
if (mysql_affected_rows() > 0){$A = '##Ok##';}
Echo $A;
exit();
}
}
else
{
echo 'Usuario no válido';
exit();
}
?>