Помощь с sql и строками

#php #mysql #sql

#php #mysql #sql

Вопрос:

это мой запрос к mysql:

     mysql_query("INSERT INTO Coordenadas (ID, LAT, LNG, DESCRICAO) VALUES ($id, $coords[1], $coords[0], $string_cortada)");
  

когда я повторяю $ id, $ coords [0], $ coords[1] и $string_cortada с этим:

 echo '</br>$id:'.$id.'</br>coordenadas:'.$coords[1].','.$coords[0].'</br>string: ' . $string_cortada;):
  

это то, что я получаю:

 $id: 1
coordenadas:-22.9028102,-43.2498512
string: marechal rondon 

$id: 2
coordenadas:-22.9824202,-43.3605722
string: rua joana angelica 

$id: 3
coordenadas:-22.8866218,-43.3699090
string: passarela barra
  

рабочие данные, но когда я делаю:

 mysql> select * from coordenadas;
  

это результат:

  ---- ------ ------------- ------------- ----------- ------ 
| ID | TIPO | LAT         | LNG         | DESCRICAO | DATA |
 ---- ------ ------------- ------------- ----------- ------ 
|  2 | NULL | -22.8544942 | -43.5350719 | 1         | NULL |
 ---- ------ ------------- ------------- ----------- ------ 
  

Описание не сработало, ТИПО не сработало, только широта и СПГ, я не могу найти почему!!

это описание таблицы coordenadas:

 mysql> desc coordenadas;
 ----------- -------------- ------ ----- --------- ---------------- 
| Field     | Type         | Null | Key | Default | Extra          |
 ----------- -------------- ------ ----- --------- ---------------- 
| ID        | int(11)      | NO   | PRI | NULL    | auto_increment |
| TIPO      | varchar(15)  | YES  |     | NULL    |                |
| LAT       | double       | NO   |     | NULL    |                |
| LNG       | double       | NO   |     | NULL    |                |
| DESCRICAO | varchar(150) | YES  |     | NULL    |                |
| DATA      | date         | YES  |     | NULL    |                |
 ----------- -------------- ------ ----- --------- ---------------- 
  

Спасибо

Комментарии:

1. Обратите внимание, что числа ( double ) работают, а строки ( varchar ) — нет.

2. вы имеете в виду ТИПО и ДАННЫЕ? не ТИПО и не ОПИСАНО?

Ответ №1:

У вас ошибка в вашем SQL-запросе:

  mysql_query("INSERT INTO Coordenadas (ID, LAT, LNG, DESCRICAO) VALUES ($id, $coords[1], $coords[0], $string_cortada)");
  

$string_cortada необходимо инкапсулировать с помощью речевых знаков, поскольку это строка.Измените его на:

  mysql_query("INSERT INTO Coordenadas (ID, LAT, LNG, DESCRICAO) VALUES ($id, $coords[1], $coords[0], '$string_cortada')");
  

Для будущей отладки я бы написал SQL-запросы на PHP следующим образом:

 $sql = "INSERT INTO Coordenadas (ID, LAT, LNG, DESCRICAO) VALUES ($id, $coords[1],        $coords[0], '$string_cortada')"

$result = mysql_query($query) 

if (!$result) {
 $message  = 'Invalid query: ' . mysql_error() . "n";
 $message .= 'Whole query: ' . $query;
 die($message);
}
  

Таким образом, вы можете увидеть, как выглядит запрос, отправленный в вашу базу данных, а также увидеть причину ошибки при возникновении ошибки. Это должно помочь вам быстро идентифицировать любые будущие ошибки форматирования.

Чтобы удалить пробелы, окружающие (в начале и в конце) строку, вы можете использовать метод trim() таким образом:

 $text = trim($text);
  

Чтобы удалить все пробелы из строки, вы можете использовать preg_replace следующим образом:

 $text = preg_replace('/ /', '', $text);
  

Комментарии:

1. Добавлено, как удалить пробелы из строки.

Ответ №2:

Вы не указали TIPO в своем запросе ввода… И для ОПИСАНИЯ попробуйте использовать одиночные кавычки, такие как

 VALUES ($id, $coords[1], $coords[0], '$string_cortada')