Задать вопрос
@Dark19

Почему ошибка при записи в БД?

Добрый день, подскажите что не так, не могу понять почему ошибка. в $cords попадает массив из js в котором 2 значения на подобие таких: 50.524520328296454
Записываю данные в бд вот так:

$cords = $_POST['cords'];
    include_once("DataBase.php");
    $db = new DataBase();
    $long_st = $cords[0];
    $lat_st = $cords[1];
    $db->dbQuery("INSERT INTO point(long, lat)
                        VALUES ('$long_st', '$lat_st')");


Вот сама функция:
public function dbQuery($sql){
        $this->dbInit();
        $res = mysql_query($sql);
        if(!$res)
            exit("Помилка - ".mysql_error().", ".$res);
        $ret = array();
        while ($row = mysql_fetch_assoc($res)){
            $ret[] = $row;
        }

        return $res;

    }
}


При записи мне выкидывает ошибку:

Помилка - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'long, lat)
VALUES ('50.524520328296454', '32.3160609375' at line 1,
  • Вопрос задан
  • 184 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
RomaZveR
@RomaZveR
CEO AlertMoney, PHP/Golang Developer
У тебя же инсерт идёт, а ты пытаешься вывод сделать, тебе база возвращает результат запроса на добавление
$cords = $_POST['cords'];
    include_once("DataBase.php");
    $db = new DataBase();
    $long_st = $cords[0];
    $lat_st = $cords[1];
    $db->dbQuery("INSERT INTO `point`(`long`, `lat`)
                        VALUES (' ".$long_st." ', ' ".$lat_st." ')");

    $select = $db->dbQuery("SELECT * FROM `point` WHERE long = '0' AND lat ='0' ");
     if (mysql_num_rows($select) == 0)
     {
          exit("Ничего не нашёл");
     }
     $ret = array();
      while ($row = mysql_fetch_assoc($select))
      {
            $ret[] = $row;
      }


public function dbQuery($sql)
{
    $this->dbInit();
    $res = mysql_query($sql);
    if(!$res) 
          exit("Помилка - ".mysql_error().", ".$res);

   return $res;

}


P.S Ты бы хоть каким-нибудь htmlspecialchars() данные от клиента фильтровал на худой конец.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
zoonman
@zoonman
⋆⋆⋆⋆⋆
$db->dbQuery("INSERT INTO `point`(`long`, `lat`)
                        VALUES ('$long_st', '$lat_st')");


Point - зарезервированное слово в MySQL. В случае конфликта имен используйте экранирование слов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы