#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')