Запись данных в mysql из формы. Особенно урок будет полезен новичкам. Решение распространённых ошибок


От автора: эх, из песни слов не выкинешь! Но их можно удалить, обновить или вставить другие. Главное, чтобы слова были внесены в базу данных. Сегодня мы расскажем, как происходит запись данных в MySQL и как это сделать правильно, чтобы песня звучала!

Добавление записей c помощью phpMyAdmin

В оболочке phpMyAdmin для администрирования СУБД MySQL реализован «облегченный» функционал добавления новый записей в таблицы базы данных. Из-за своей простоты он идеально подходит как для зеленых «чайников», так и для «ленивых» профессионалов.

Чтобы занести новую информацию в таблицу, следует зайти в программу под правами администратора. Затем в списках слева выбрать нужную базу и таблицу. После чего в верхнем меню перейти через пункт «Вставить».

После этого, чтобы внетсти запись в БД MySQL, заполняем в следующем окне для всех столбцов поля «Значение» и нажимаем внизу «Ок».

На приведенном выше скриншоте видно, что модифицируемая таблица «Animals» состоит из двух столбцов (полей): id и name. Во втором разделе указан тип каждого из столбцов. Нам нужно внести значение только для поля name, поскольку столбец id является первичным ключом, и для него при создании таблицы задан автоинкремент. Это значит, что значение поля id будет генерироваться MySQL автоматически, прибавляя к предыдущему целому числовому значению 1.

Чтобы узнать, какое поле записей данных в MySQL является первичным ключом (primary key), в phpMyAdmin перейдите меню (при выбранной таблице слева в списке) на вкладку верхнего меню «Структура». Здесь приводится описание всех полей таблицы, их тип и дополнительные характеристики.

Вставка данных с помощью SQL-запросов

Но phpMyAdmin – это всего лишь оболочка, а настоящие администраторы «общаются» с сервером MySQL с помощью языка структурированных запросов. То есть «разговаривают» с ним на языке SQL. Так как мы стремимся стать настоящими профессионалами, то немного «окунемся» в изучение команд SQL в рамках рассматриваемой темы. Вот запрос, введя который в поле «SQL», вы создадите такую же базу данных:

CREATE TABLE Animal (id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id));

CREATE TABLE Animal (id MEDIUMINT NOT NULL AUTO_INCREMENT ,

name CHAR (30 ) NOT NULL , PRIMARY KEY (id ) ) ;

После создания таблицы и запись данных в базу MySQL (через вкладку «Вставить») программа сообщит вам, что в animals добавлена строка со значением идентификатора 1. А немного ниже в окне редактора будет выведен код запроса, который за нас сформировала оболочка и отослала серверу БД.

Код запроса:

INSERT INTO `my_db1`.`animal` (`id`, `name`) VALUES (NULL, "Cat");

INSERT INTO ` my_db1 ` . ` animal ` (` id ` , ` name ` ) VALUES (NULL , "Cat" ) ;

Давайте более подробно изучим его. В SQL для вставки новой строки в таблицу используется оператор INSERT. Он сообщает серверу, что в таблицу базы данных (my_db1 . animal) нужно в поля id и name вставить указанные значения (VALUES (NULL, ‘Cat’).

Обратите внимания, что столбцу id мы указываем не числовое значение, а NULL, поскольку для этого поля мы «включили» автозаполнение (автоинкремент).

Как вставить запись с помощью PHP

Все рассмотренное нами является лишь «прелюдией» к основному действу, в котором выходит на сцену «его высочество» серверный язык программирования PHP. Именно благодаря ему MySQL как СУБД получила такое распространение в Сети.
На связке этих двух интернет-технологий построена большая часть всемирной паутины. Куда ни гляньте, везде вы найдете их: в современных CMS, «самописных» движках и на сервере.

Не удивительно, что для записи данных в MySQL PHP предоставляет столько встроенных функций. Но мы остановимся на самых главных из ним. Вот код, который добавляет новое «животное» в таблицу animals. Если сильно постараться, то таким образом можно собрать целый зверинец:)

$con_str=mysql_connect("localhost", "root", "", "db1"); if(mysql_connect("localhost","root")){ echo "Hello!!"; } mysql_select_db("db1",$con_str); $query_str="INSERT INTO `db1`.`animal` (`id`, `name`) VALUES (NULL, "dog")"; mysql_query($query_str); mysql_close();

$ con_str = mysql_connect ("localhost" , "root" , "" , "db1" ) ;

if (mysql_connect ("localhost" , "root" ) ) {

echo "Hello!!" ;

mysql_select_db ("db1" , $ con_str ) ;

$ query_str = "INSERT INTO `db1`.`animal` (`id`, `name`) VALUES (NULL, "dog")" ;

mysql_query ($ query_str ) ;

mysql_close () ;

Этот код нужно вставить в файл PHP и разместить его на стороне сервера.

С помощью функции mysql_connect() мы коннектимся к серверу баз данных MySQL. В качестве аргументов функция принимает хост, имя пользователя СУБД, пароль и название базы, к которой нужно подключиться. У нас указан пустой пароль, поскольку мы используем сервер, установленный на локальной (клиентской) машине.

Для демонстрации всех описанных примеров записи в базу MySQL с помощью PHP мы применяли «джентельменский набор» от Денвера. В него входит локальный сервер Apache, сервер MySQL, phpMyAdmin и еще несколько полезных средств создания и тестирования программного кода.

Затем в логическом блоке if мы проверили наличие соединения к серверу БД. После чего в функции mysql_select_db() мы обозначили базу, к которой будем коннектиться. С помощью функции mysql_query() запустили на выполнение SQL-запрос, записанный в переменную $query_str. И в конце закрыли установленное соединение (функция mysql_close()). Теперь, если мы заглянем в свой зверинец (таблицу animal), то обнаружим там нового «питомца».

Для его записи в MySQL PHP «любезно» предоставил весь необходимый набор функций. Главное, на чем «обжигаются» новички при использовании SQL в программном коде – это неправильное написание запросов, нарушение синтаксиса и чередования знаков для экранирования (кавычек).

Чтобы избежать появления на своей голове лишних «седых» волос, лучше проверять правильность написания запроса с помощью phpMyAdmin. Для этого разместите код SQL в редакторе программы и запустите его на выполнение. Если что-то не так, то приложение начнет «ругаться», выведет сообщение красного цвета и укажет месторасположение ошибки.

Как видите, с помощью MySQL можно и свой зверинец «собрать», и правильно изменить слова любой «песни». И для записи в базу MySQL PHP подходит идеально, поэтому мы советуем вам завести «тесную» дружбу с этим «великим» языком программирования!

В этом посте хочу рассказать, как передать в Базу Данных, введенные данные в форму . И так мы создаем простую форму, где у нас будет два поля: имя пользователя и его электронная почта:

Ваше имя:
Ваш E-mail:


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

$name = $_POST["name"]; $email = $_POST["email"]; $result = mysqli_query("INSERT INTO user (name, email) VALUES ("$name", "$email")"); if ($result) { echo "Данные успешно сохранены!"; } else { echo "Произошла ошибка, пожалуйста повторите попытку."; }


Что же в этом скрипте происходит? Сейчас разберемся!
Введенные в форму данные, методом POST переходят в php скрипт (который написан выше), и при помощи глобального массива $_POST данные формируются в переменные $name и $email:

$name = $_POST["name"]; $email = $_POST["email"];


После того, как переменные готовы для занесения в базу, составляем запрос. Но прежде Ваши скрипты должны быть уже подключены к БД, как подключиться к БД, я писал в этой теме: . Сам запрос выглядит так:

$result = mysqli_query("INSERT INTO user (name, email) VALUES ("$name", "$email")");


В этом коде мы обозначили, что в ячейки name и email , которые находятся в таблице user , будут добавлены следующие переменные: $name и $email .
Далее, если все прошло успешно, мы получим сообщение из условия:

Данные успешно сохранены!


Если же возникли какие то проблемы и данные не были занесены, мы получим сообщение об ошибке:

Произошла ошибка, пожалуйста повторите попытку.


Вот и все!

*** *** *** *** ***

При желании можно добавить больше полей для ввода информации, например нам необходимо добавить поле для ввода города пользователя. У нас уже есть готовый скрипт (написан выше), теперь просто добавим поле Ваш город , переменную назовем: $city . И так в форму ввода данных, после:

Ваш E-mail:


добавляем:

Ваш город:


В php скрипте, после:

$email = $_POST["email"];


добавляем:

$city = $_POST["city"];


Ну и конечно в запросе добавляем тоже, вот так:

$result = mysqli_query("INSERT INTO user (name, email, city) VALUES ("$name", "$email", "$city")");


Вот, что должно получится в итоге:
Форма ввода:

Ваше имя:
Ваш E-mail:
Ваш город:


Скрипт:

$name = $_POST["name"]; $email = $_POST["email"]; $city = $_POST["city"]; $result = mysqli_query("INSERT INTO user (name, email, city) VALUES ("$name", "$email", "$city")"); if ($result == true) { echo "Данные успешно сохранены!"; } else { echo "Произошла ошибка, пожалуйста повторите попытку."; }


Как видите ни чего сложного! При необходимости можно добавить ещё поле, и ещё, и ещё...

В этой статье мы рассмотрим, как использовать PHP для вставки строк в базу данных MySQL.

Шаг 1 — Создание таблицы

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

После входа вы phpMyAdmin вы увидите такой интерфейс:
Создадим в базе данных u266072517_name таблицу с именем Students, нажав на кнопку «Создать таблицу». После этого мы увидите новую страницу, на которой задаем все необходимые параметры таблицы:

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

Параметры столбцов:

  • Name — это имя столбца, которое отображается в верхней части таблицы.
  • Type — тип столбца. Например, мы выбрали varchar, потому что будем вводить строковые значения.
  • Length/Values — используется для указания максимальной длины, которую может иметь запись в этом столбце.
  • Index — мы использовали «Первичный» индекс для поля «ID». При создании таблицы рекомендуется применять в качестве первичного ключа только один столбец. Он используется для перечисления записей в таблице и требуется при настройке таблицы. Я также отметил «A_I», что означает «Auto Increment» — параметр автоматического присваивания номера записей (1,2,3,4 …).
    Нажмите кнопку «Сохранить», и таблица будет создана.

Шаг 2. Написание PHP-кода для вставки данных в MySQL.

Вариант 1 — метод MySQLi

Сначала необходимо установить соединение с базой данных. После этого используем SQL-запрос INSERT. Полный пример кода:

" . mysqli_error($conn); } mysqli_close($conn); ?>

Первая часть кода (3 — 18 строка) предназначена для подключения к базе данных.

Начнем со строки № 19:

$sql = "INSERT INTO Students (name, lastname, email) VALUES ("Thom", "Vial", "[email protected]")";

Она вставляет данные в базу MySQL. INSERT INTO — это оператор, который добавляет данные в указанную таблицу. В нашем примере данные добавляются в таблицу Students.

Далее идет перечисление столбцов, в которые вставляются значения: name, lastname, email. Данные будут добавлены в указанном порядке. Если бы мы написали (email, lastname, name), значения бы были добавлены в другом порядке.

Следующая часть — это оператор VALUES. Здесь мы указываем значения для столбцов: name = Thom, lastname = Vial, email = [email protected].

Мы запустили запрос с использованием PHP-кода. В программном коде SQL-запросы должны быть экранированы кавычками. Следующая часть кода (20-22 строка) проверяет, был ли наш запрос успешным:

if (mysqli_query($conn, $sql)) { echo "New recordcreatedsuccessfully"; }

Этот код выводит сообщение об успешном выполнении запроса.

И последняя часть (22 — 24 строка) отображает уведомление, если запрос не был успешным:

else { echo "Error: " . $sql . "
" . mysqli_error($conn); }

Вариант 2 — метод объекта данных PHP (PDO)

Сначала нам нужно подключиться к базе данных путем создания нового объекта PDO. При работе с ним будем использовать различные методы PDO. Методы объектов вызываются следующим образом:

$the_Object->the_Method();

PDO позволяет «подготовить» SQL-код до его выполнения. SQL-запрос оценивается и «исправляется» перед запуском. Например, простейшая атака с использованием SQL-инъекции может быть выполнена через простое введение SQL-кода в поле формы. Например:

Так как это синтаксически правильный SQL- код, точка с запятой делает DROP DATABASE user_table новым SQL-запросом, и пользовательская таблица удаляется. Подготовленные выражения (связанные переменные) не позволяют, чтобы точка с запятой и кавычки завершали исходный запрос.Поэтому команда DROP DATABASE никогда не будет выполнена.

Чтобы использовать подготовленные выражения, нужно написать новую переменную, которая вызывает метод prepare() объекта базы данных.

Корректный код:

getMessage(); } // Устанавливаем переменные для персоны, которую мы хотим добавить в базу данных $first_Name = "Thom"; $last_Name = "Vial"; $email = "[email protected]"; // Создаем переменную, которая вызывает методобъекта базы данных prepare() // Запрос SQL, который вы хотите выполнить, вводится как параметр, а заполнители пишутся следующим образом:placeholder_name $my_Insert_Statement = $my_Db_Connection->prepare("INSERT INTO Students (name, lastname, email) VALUES (:first_name, :last_name, :email)"); // Теперь мы указываем скрипту, какая переменная ссылается на каждый заполнитель, чтобы использовать метод bindParam() // Первый параметр - это заполнитель в операторе выше, второй - это переменная, на которую он должен ссылаться $my_Insert_Statement->bindParam(:first_name, $first_Name); $my_Insert_Statement->bindParam(:last_name, $last_Name); $my_Insert_Statement->bindParam(:email, $email); // Выполняем запрос, используя данные, которые только что определили // Метод execute() возвращает TRUE, если он выполнен успешно, и FALSE, если нет, предоставляя вам возможность вывести собственное сообщение if ($my_Insert_Statement->execute()) { echo "New recordcreatedsuccessfully"; } else { echo "Unable to createrecord"; } // В этой точке можно изменить данные переменных и выполнить запрос, чтобы добавить другие данные в базу data to the database $first_Name = "John"; $last_Name = "Smith"; $email = "[email protected]"; $my_Insert_Statement->execute(); // Выполняем снова, когда переменная изменена if ($my_Insert_Statement->execute()) { echo "New recordcreatedsuccessfully"; } else { echo "Unable to createrecord";

В строках 28, 29 и 30 мы используем метод bindParam() объекта базы данных. Также существует метод bindValue(), который сильно отличается от предыдущего.

  • bindParam() — этот метод оценивает данные при достижении метода execute(). В первый раз, когда скрипт достигает метода execute(), он видит, что $first_Name соответствует «Thom». Затем связывает это значение и запускает запрос. Когда скрипт достигает второго метода execute(), он видит, что $first_Name теперь соответствует «John». После чего связывает это значение и снова запускает запрос с новыми значениями. Важно помнить, что мы однажды определили запрос и повторно используем его с разными данными в разных точках скрипта.
  • bindValue() — этот метод оценивает данные, как только достигается bindValue(). Поскольку для $first_Name было установлено значение «Thom», при достижении bindValue(), оно будет использоваться каждый раз, когда вызывается метод execute() для $my_Insert_Statement.
    Обратите внимание, что мы повторно используем переменную $first_Name и присваиваем ей новое значение во второй раз. После запуска скрипта в БД будут указаны оба имени, несмотря на то, что переменная $first_Name в конце скрипта имеет значение «John». Помните, что PHP проверяет весь скрипт, прежде чем запустить его.

Если вы обновите скрипт, чтобы заменить bindParam на bindValue, вы дважды вставите в базу данных «Thom Vial», а John Smith будет проигнорирован.

Шаг 3 — подтверждение успешного выполнения и решение проблем

Если запрос на вставку строк в базу был успешным, мы увидим следующее сообщение:

Устранение распространенных ошибок

MySQLi

В любом другом случае будет отображено сообщение об ошибке. Например, давайте сделаем в коде одну синтаксическую ошибку, и мы получим следующее:

Первая часть кода в порядке, соединение было успешно установлено, но SQL-запрос не прошел.

"Error: INSERT INTO Students {name, lastname, email} VALUES ("Thom", "Vial", "[email protected]") You have an error in your SQL syntax; check the manualthatcorresponds to your MySQL server version for the rightsyntax to use near "{name, lastname, email} VALUES ("Thom", "Vial", "[email protected]")" at line 1"

Была допущена синтаксическая ошибка, которая вызвала сбой скрипта. Ошибка была здесь:

$sql = "INSERT INTO Students {name, lastname, email} VALUES ("Thom", "Vial", "[email protected]")";

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

PDO

В строке 7 соединения PDO для режима ошибок установлено «display all exceptions». Если задано другое значение, и запрос не удался бы, мы не получили бы никаких сообщений об ошибках.

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

Fatal error: Uncaughtexception "PDOException" with message "SQLSTATE: Syntax error or accessviolation: 1064 You have an error in your SQL syntax; check the manualthatcorresponds to your MySQL server version for the rightsyntax to use near "{name, lastname, email} VALUES ("Thom", "Vial", "[email protected]")" at line 1"

Другие возможные проблемы:

  • Неверно указаны столбцы (несуществующие столбцы или орфографическая ошибка в их именах).
  • Один тип значения присваивается столбцу другого типа. Например, если попытаться вставить число 47 в столбец Name, то получим ошибку. В этом столбце необходимо использовать строковое значение. Но если бы мы указали число в кавычках (например, «47») то сработало бы, потому что это строка.
  • Попытка ввести данные в таблицу, которая не существует. А также допущенная орфографическая ошибка в имени таблицы.

После успешного ввода данных мы увидим, что они добавлены в базу данных. Ниже приведен пример таблицы, в которую добавили данные.

Заключение

В этой статье мы рассказали, как использовать PHP для вставки данных в базу данных MySQL, используя MySQLi и PDO. А также о том, как устранять распространенные ошибки. Эти знания будут полезны при изучении программирования и при разработке собственного сайта.

Данная публикация представляет собой перевод статьи «How to Use PHP to Insert Data Into MySQL Database » , подготовленной дружной командой проекта

Все модули сайта или веб приложения, где требуется внести и записать некоторые данные (например, имя, возраст, адрес и т.д.) используют простую функцию на языке mysql INSERT INTO `name_base` (name,value1,value2) VALUES (‘Vasya’,’1’,’2’);

Все переменные вносятся в базу данных согласно значениям, которые мы задали в первых скобках. Важно учитывать кодировку скрипта обработчика, базы данных и файла конфигурации. Желательно использовать самую распространенную кодировку UTF-8.

Следует учитывать, что записывать в базу можно двумя способами.

Первый способ если мы не задаем изначально имена ячейки таблиц базы данных. Тогда мы должны перечислить все переменные для каждой ячейки, а именно сколько ячеек в таблице базы данных, столько переменных должно быть перечислено в скобках после значения VALUE.

Например:
В таблице базы данных четыре ячейки. Значит после элемента VALUE (..) в скобках должны быть перечислены все четыре переменные. И еще один момент: если переменная не существует, допустим это необязательный параметр. То пишем просто пустое значение в кавычках ‘’,

"INSERT INTO `name_base` VALUES (NULL, `".$name."`,``,`2`)"; // третье пустое значение пишется в кавычках

Но у данного запроса есть небольшие недостатки. Если добавить одну ячейку или две ячейки в таблицу базы данных, то данный запрос вернет ошибку. Потому, что в этом методе перечисление всех ячеек в запросе обязательно.

Второй способ если после запроса INSERT INTO `name_base` (…) перечислить все ячейки после имени базы данных. Пример уже рассмотрен чуть выше. Если забыли, напишем заново:

"INSERT INTO `name_base`(`name`,`value`,`value2`) VALUES (NULL, `".$name."`,``,`2`)";

Здесь мы перечислили все ячейки (name,value1,value2) . И если добавить дополнительно еще одну две ячейки в таблицу базы данных, то синтаксис запроса менять не придется. Но если только нам не нужно добавлять сразу в одном запросе те самые дополнительные переменные, которые нам нужны для тех самых новых созданных ячеек.

Такая ошибка вылетает очень часто, после небольшого изменения на сайте. Допустим, администратор добавил дополнительную ячейку в базу, допустим status. А изменить модуль обработчик скрипта не успел, или просто элементарно забыл. Но некоторые сайты имеют очень сложную структуру, и на поиск ошибки может уйти масса времени и сил. Поэтому желательно использовать второй метод записи в базу данных. Хотя такого рода ошибки чаще допускают начинающие веб программисты.

Php запись в базу данных mysql. Практические примеры

Итак, теперь добрались до самой сути при работе с запросами к базе данных. Все будем делать на практических примерах. Создадим простой скрипт для записи комментариев, которые будут оставлять посетители сайта.

Для начала создадим таблицу msg в базе данных с четырьмя ячейками. В первой ячейке пишем id комментария. Число символов в ячейке до десяти символов с параметром auto-increment. Это автоматический параметр будет меняться при каждом добавлении комментария на +1.

Следующая ячейка name имя пользователя. Число символов - до двести - триста символов на ваш выбор, параметр char. Затем ячейка coment - в эту ячейку будем заносить сам текст комментария. Если хотите записывать большие тексты комментариев, то можно задать параметр text - тогда можно заносит просто огромные тексты, более пятьсот тысяч символов или задайте параметр tinytext, тогда будет влезать чуть меньше символов, но работать будет чуть быстрее.

Но в нашем случае, будем иметь в виду, что посетители не будут писать огромные тексты. И поэтому ограничимся и будем фиксировать две тысячи символов с параметром varchar, для записи строковых значений.

В последнюю ячейку будем писать дату внесения записи текста комментария. Писать будем в числовом формате в секундах, при помощи функции текущей даты и времени time(); Для простоты, функцию зададим в переменную $time=time(); И создадим ячейку в базе данных. Назовем одноименно time с параметром int (для числовых значений). Пропишем число символов - лучше одиннадцать (с небольшим запасом на будущее:-).

Дамп базы данных следующий:

Структура таблицы `msg` -- CREATE TABLE IF NOT EXISTS `msg` (`id` int(10) NOT NULL AUTO_INCREMENT, `name` char(250) NOT NULL, `coment` varchar(2000) NOT NULL, `time` int(11) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

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

Комментарии, перенесенные из блога

СЕРГЕЙ
14.09.2016 в 01:25
День добрый!
Интересует такой вопрос: каким образом проще всего организовать хранение данных и настроек программы без использования бд? Не хочется привязываться к MySQL или Access ..

ADMIN
14.09.2016 в 22:14
Здравствуйте!

Properties.Settings
App.Config
XML файл
сериализация
Попробуйте выбрать что-нибудь из этого из списка.

НИКОЛАЙ
16.09.2016 в 02:28
Здравствуйте, как удалить выделенную строку в dataGridVIew из dataGridVIew и phpMyAdmin.

PhpMyAdmin? Это лишь оболочка для работы с базой данных, можете пояснить?

НИКОЛАЙ
18.09.2016 в 02:24
нужно что бы выделенная строка удалялась из DataGridView и из базы данных.

ADMIN
19.09.2016 в 07:00
Как удалить строку в базе данных Mysql — добавил статью.

НИКОЛАЙ
20.09.2016 в 09:20
Спасибо огромное.

ДИМА
20.09.2016 в 10:24
Здравствуйте, а можно данный способ реализовать не через DataGridView, а через ComboBox? Если да, то как? Спасибо.

ADMIN
22.09.2016 в 03:21
Привет. Пример:

ГЕННАДИЙ
22.09.2016 в 18:25
почему мне в базу данных вноситься такой текст System.Windows.Forms.TextBox, Text: ге

К стате вот это (ге) к конце это написано гена хоть в настройках таблицы указан текст.слово гена должно было уместиться дальше я вывожу эту таблицу в свою программку и получается что он выводит мне весь этот ненужный текст

ADMIN
24.09.2016 в 04:17
Скорее всего неверно написан SQL запрос, например:

В textBox1 вводим имя: Гена.

Sql запрос: «Insert into имя таблицы values(textBox1, ..)»; Результат: System.Windows.Forms.TextBox

А нужно передавать: «Insert into имя таблицы values(textBox1.Text, ..)»;
Результат: Гена

ГЕННАДИЙ
24.09.2016 в 18:41
Да так оно и есть. СПасибо

СЕРГЕЙ
25.09.2016 в 11:51
Здравствуйте. А как реализовать добавление в БД через textBox?

ADMIN
26.09.2016 в 20:53
Всё тоже самое в принципе. Например, возьмём самый последний пример, в нём нужно:

//создаем параметры и добавляем их в коллекцию cmd.Parameters.AddWithValue("@Name", textBox1.Text); cmd.Parameters.AddWithValue("@LastName", textBox2.Text);

теперь параметры: Name и LastName получают значения введенные в textbox-ы и передают их в БД

ЛИНАРА
27.09.2016 в 17:45
Здравствуйте, как выделенную строку в dataGridVIew и phpMyAdmin?

ADMIN
29.09.2016 в 02:06
Я не знаю, как можно выделенную строку в phpMyAdmin. А в dataGridView, например это можно сделать с помощью события SelectionChanged.

PSH
30.09.2016 в 03:48
2Линара:
Если так хотите редактировать строки, возьмите инструмент а-ля HediSQL, настройте и изменяйте строки.

2admin
Доброго дня! Спасибо за материлы — всё очень круто изложено)
Вопрос: добавляю данные вот таким запросом (он тестовый):

String sql = "INSERT INTO users (`FIO`, `Tour`, `Count`, `Cost`, `Date`, `Passport`, `Birth`) VALUES ("Колян", "Москва", "1+1", 1100, "2011-11-11", "1111 1111", "9.11.1900");";

Данные вносятся всё ок, но вот в БД (mysql) вместо кириллицы оказываются «????».

Visual studio говорит, что System.String — последовательность Юникода.

Также пробовал:

ALTER DATABASE `test` COLLATE "koi8r_general_ci"; ALTER TABLE `users` COLLATE="koi8r_general_ci"; ALTER DATABASE `test` COLLATE "utf8_unicode_ci"; ALTER TABLE `users` COLLATE="utf8_unicode_ci";

Но не помогает..
В чем может быть дело? Разные кодирвки VS и БД? Или что?
Могли бы направить что почитать/поменять.
Спасибо

ADMIN
01.10.2016 в 09:49
Привет.

В БД (и в таблице) сопоставление utf_general_ci

Такое сопоставление разве есть? Возможно, utf8_general_ci?

Обычно создают БД Mysql выбирая сравнение utf8_general_ci, поэтому проблем с кириллицей не возникает, если конечно с клиента не приходят кракозябры на сервер.

COLLATION используется для сравнения, а в данном же случаи важна кодировка (charset). Поэтому для начала необходимо убедиться, что она выставлена на сервере верно, например в utf8, а не latin1.

При подключении через.net коннектор (по умолчанию) используется latin1, поэтому иногда требуется явно указать в строке подключения кодировку utf8:

MySqlConnection mycon; mycon = new MySqlConnection("server=127.0.0.1;uid=vasya;pwd=123;database=test;Charset=utf8;"); //MySqlConnectionStringBuilder: mysqlCSB.CharacterSet = "utf8";

PSH
01.10.2016 в 11:34
Вы правы, описался, utf8_general_ci!
Да помогло, ;Charset=utf8;
Спасибо огрмное!

СЕРГИЙ
02.10.2016 в 11:02
Спасибо за рабочий пример, нужный. Вопрос
Я создал текстовое поле в которое хотел бы вводить айпи-адрес базы данных, но не знаю как подставить эти данные вот сюда

String conStr = "server=@textBox2;user=test;" +
"database=test;password=test;";
Подскажите пожалуйста как вставлять данные из текстовых полей в windows form в эту конструкцию….

ADMIN
03.10.2016 в 11:50
"[email protected];user=...
Вообще лучше вместо такой строки использовать свойства, как в данной статье, либо метод String.Format()

OLGA2203
15.05.2017 в 20:14

String Connect = “Server=127.0.0.1;Port=3306;Database=base;Data Source=localhost;user=root;”; MySqlConnection con = new MySqlConnection(Connect); con.Open(); //Устанавливаем соединение с базой данных. MySqlCommand cmd = new MySqlCommand(); cmd.CommandText = @”INSERT INTO tovar(ID,Category,Name,TradeMark,Price,Photo,Size,Color,Material,Count) VALUES (@pr, @Category, @Name, @TradeMark, @Price, @Photo, @Size, @Color, @Material, @Count)”; cmd.Parameters.AddWithValue(“@pr”,counter); cmd.Parameters.AddWithValue(“@Category”, comboBox1.SelectedItem.ToString()); cmd.Parameters.AddWithValue(“@Name”, textBox1.Text); cmd.Parameters.AddWithValue(“@TradeMark”, textBox2.Text); cmd.Parameters.AddWithValue(“@Price”, Convert.ToInt32(textBox4.Text)); cmd.Parameters.AddWithValue(“@Photo”, textBox3.Text); cmd.Parameters.AddWithValue(“@Size”, textBox6.Text); cmd.Parameters.AddWithValue(“@Color”, textBox5.Text); cmd.Parameters.AddWithValue(“@Material”, textBox8.Text); cmd.Parameters.AddWithValue(“@Count”, Convert.ToInt32(textBox7.Text)); cmd.Connection = con; cmd.ExecuteNonQuery(); MessageBox.Show(“Добавление прошло успешно”, “Добавление прошло успешно”, MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

Выдается ошибка “Column ‘ID’ cannot be null”, убираю добавление в столбец ID – то же самое про следующий столбец пишет и т.д.
Если вношу какие-нибудь константные значения в скобках в VALUES, строка в базу добавляется.
Подскажите, пожалуйста, в чем проблема? Мне нужно записывать в базу данных именно вводимые через форму данные и значения