Почему в БД MySQL через форму добавляются только цифры?

Если в строке ввода написать "100500", то эта строка вставится в таблицу, а если написать 100abc, то не вставляется.

<form method="post" action="proc1.php">
      <input name="lol" type="text" id="lol" style="width: 300px">
      <input type="submit" value="Insert">
  </form>

<?php
$hosti = 'localhost';
$dbusernamei = 'root';
$nameofdbi = 'usr';
$dbpasswordi = '';

// MySQL<->PDO
$dbi = new PDO("mysql:dbname=$nameofdbi;host=$hosti", $dbusernamei, $dbpasswordi, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

$a = $_POST['lol'];
//$a = 'test';

$query = "INSERT INTO `usr`.`rtm` (`lol`) VALUES (".$a.")";
	$stmt = $dbi->prepare($query);
    $stmt->execute();

?>


SQL Dump
-- phpMyAdmin SQL Dump
-- version 4.4.15.7
-- http://www.phpmyadmin.net
--
-- Хост: 127.0.0.1:3306
-- Время создания: Авг 28 2018 г., 08:00
-- Версия сервера: 5.7.13
-- Версия PHP: 5.6.23

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- База данных: `***`
--

-- --------------------------------------------------------

--
-- Структура таблицы `rtm`
--

CREATE TABLE IF NOT EXISTS `rtm` (
  `lol` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Дамп данных таблицы `rtm`
--

INSERT INTO `rtm` (`lol`) VALUES
('575888'),
('435435'),
('56567657858'),
('3453463'),
('5757'),
('6747547'),
('86897890070'),
('786'),
('6868'),
('46464666464646664748488864242526'),
('46464666464646664748488864242526'),
('46464666464646664748488864242526'),
('46457474774747'),
('564545'),
('6456747847'),
('58888'),
('8800255');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
  • Вопрос задан
  • 510 просмотров
Решения вопроса 2
RomaZveR
@RomaZveR
CEO AlertMoney, PHP/Golang Developer
$dbi = new PDO("mysql:dbname=$nameofdbi;host=$hosti", $dbusernamei, $dbpasswordi, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$a = $_POST['lol'];
$query = "INSERT INTO `usr`.`rtm` (`lol`) VALUES (?)";
$stmt = $dbi->prepare($query);
$stmt->bindParam(1, $a, PDO::PARAM_STR);
$stmt->execute();


И тип данных колонки lol покажите.
Ответ написан
@Arik
Строки нужно в кавычках ставить
$query = "INSERT INTO `usr`.`rtm` (`lol`) VALUES ('".$a."')";


не забывайте про SQL-инъекции
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы