es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Insertar y consultar valores de puntos de MySQL devuelve ASCII

Tengo un problema un tanto extraño. Estoy intentando insertar coordenadas de punto MySQL y devolverlas en PHP, pero en lugar de coordenadas obtengo caracteres ASCII.

Este es mi código SQL:

CREATE TABLE `Grid` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `cntr_point` POINT DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB;

INSERT INTO `Grid`(cntr_point) 
VALUES(POINTFROMTEXT('POINT(49.227239 17.564932)'));

En PHP, tengo código como este (que funciona para otros campos):

$row['cntr_point']

Pero obtengo una salida aleatoria de caracteres ASCII como esta:

*H@v0b1@

Cuando en su lugar esperaría ver las coordenadas que inserté. Parece que obtengo lo mismo incluso cuando omito PHP y uso algo como SQLFiddle:

SQLFiddle

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema podría estar en la forma en que se insertan las coordenadas en la base de datos. En lugar de usar la función “POINTFROMTEXT”, puedes intentar usar la función “GeomFromText” de la siguiente manera:

    INSERT INTO Grid (cntr_point)
    VALUES (GeomFromText(‘POINT(49.227239 17.564932)’));

    Luego, al recuperar las coordenadas en PHP, puedes usar la función “ASTEXT” para convertir las coordenadas en un formato de cadena:

    $coordString = $row[‘cntr_point’]->AsText();

    Esto debería mostrar las coordenadas como una cadena en el formato “POINT(x y)”.

Comments are closed.