Mar
16
2012

Save records to database with PHP and MySQLGuardar los registros dentro de la base de datos con PHP y MySQL

Save records to database with PHP and MySQL

I had previously wrote about how to connect to a database using PHP and MySQL. It was very simple in that it was precise, and right to the point. In many cases I got burned by people saying that this’MySQL’ library is not to be used anymore, but the truth is, I have been working on a few very recent projects, and their development team does not want to migrate to the new mysqli library. In essence, this library is still highly used by companies, and will remain that way until it is decided to eliminate it for good.

So, for those of you who do not know how to create an insert using PHP and MySQL, here I will teach you.

PHP insertion utilizes the well known SQL syntax to execute MySQL queries in a PHP script. This same query we will use to save a record to our database. First, let’s create a database table. You can either create it using an apache server installation, or create it via mysql command.

Start the command-line tool mysql and select a database:

[sql]
shell> mysql db-name
[/sql]

Create Table Users:

To be able to understand and grasp the example we will create a table named ‘Users’ and also create the required fields and datatypes respectively. The Table will have a Primary Key ID in which we will define during creation. This key will auto increment in value, thus, no value needs to be passed into this Prod.

[sql]
CREATE TABLE users (
users_id int(11) NOT NULL auto_increment,
users_fname VARCHAR(60),
users_lname VARCHAR(60),
users_email VARCHAR(60),
users_pass VARCHAR(32),
PRIMARY KEY (users_id)
);
[/sql]

Now that we have our database table, we can go ahead an insert(save) records within. We will achieve this by creating a database connection from your website to the server, and writing to the databse. The server side script includes a host, username, password and name of the database to which the records are to be added into. To execute our queries, the connection needs to be built between the front-end and MySQL in the backend. Once your connection is built successfully, you can insert(save) the records to the database(tables). The die function( ) depict that the connection could not be established, thus exiting the script from further processing.

The approach would be as follows:
[php]
// Define database credentials
$host = 'localhost';
$user = 'username';
$password = 'password';
$database = 'mydb_name';
// Create db connection
$conn = mysql_connect($host,$user,$password) or die('Error: Could not connect to database - '.mysql_error());
// Once connected, we can select a database
mysql_select_db($database,$conn) or die('Error in selecting the database: '.mysql_error());

// Grab user input and sanitize
$fname = mysql_real_escape_string(filter_var(trim($_POST['fname']), FILTER_SANITIZE_STRING));
$lname = mysql_real_escape_string(filter_var(trim($_POST['lname']), FILTER_SANITIZE_STRING));
$pass = mysql_real_escape_string(filter_var(trim($_POST['pass']), FILTER_SANITIZE_STRING));

// Validate the user email
if(! $email = filter_var(trim($_POST['email']), FILTER_VALIDATE_EMAIL)))
{
echo 'Please insert a valid email.';
die();
}

$sql = 'INSERT INTO `$database`.`users` (
`users_id` ,
`users_fname` ,
`users_lname` ,
`users_email`,
`users_pass`
)
VALUES (
NULL , ''.$fname.'', ''.$lname.'', ''.$email.'', ''.$pass.'')';

if(mysql_query($sql))
{
echo 'User information saved successfully.';
}else
{
echo 'Error: We encountered an error while inserting the new record.';
}
mysql_close($conn);
?>
[/php]
The expected output for this script should be:

User information saved successfully.Guardar los registros dentro de la base de datos con PHP y MySQL

Previamente había escrito acerca de cómo conectarse a una base de datos usando PHP y MySQL. Era muy simple, ya que fue preciso y directo al grano. En cuyo caso, varias personas me quemaron alegando que la biblioteca de ‘MySQL’ no se va a utilizar más, pero la verdad es que he estado trabajando en algunos proyectos recientes, y su equipo de desarrollo no desea migrar a la nueva mysqli biblioteca. En esencia, esta biblioteca está siendo muy utilizado por las empresas, y permanecerá así hasta que se decida eliminarla por completo.

Por lo tanto, para aquellos de ustedes que no saben cómo crear una inserción con PHP y MySQL, aquí te voy a enseñar.

PHP utiliza la inserción de la sintaxis SQL conocida para ejecutar consultas de MySQL en un script PHP. Esta misma consulta se va a utilizar para guardar un registro de nuestra base de datos. En primer lugar, vamos a crear una tabla dentro de nuestra base de datos. Usted puede crear con una instalación de servidor apache, o crear a través de comandos de MySQL.

Inicie la herramienta de línea de comandos mysql y seleccione una base de datos:

[sql]
shell> mysql nombre_base_datos
[/sql]

Crear tabla de usuarios:

Para poder entender y comprender el ejemplo, vamos a crear una tabla llamada ‘users’ y también crear los campos necesarios y tipos de datos, respectivamente. La tabla tendrá un identificador de clave principal en la cual se definirá durante la creación. Esta clave será de incremento automático en el valor, por lo tanto, ningún valor tiene que ser aprobada mientras se guarda el registro de usuario.

[sql]
CREATE TABLE users (
users_id int(11) NOT NULL auto_increment,
users_fname VARCHAR(60),
users_lname VARCHAR(60),
users_email VARCHAR(60),
users_pass VARCHAR(32),
PRIMARY KEY (users_id)
);
[/sql]

Ahora que tenemos nuestra tabla de base de datos, podemos proseguir adelante con un insert(guardar) en los registros. Esto lo lograremos mediante la creación de una conexión a la base de datos y su sitio web. El script del lado del servidor incluye un host, nombre de usuario, contraseña y nombre de la base de datos a los que los registros se van a agregar. Para llevar a cabo nuestras consultas, la conexión tiene que ser construido entre el front-end y MySQL en el servidor. Una vez que la conexión se construye con éxito, usted puede insertar (guardar) los registros de la base de datos (tablas). La función die () muestra que la conexión no se pudo establecer, por lo que tendríamos que salir de la secuencia de comandos de procesamiento.

El enfoque sería la siguiente:
[php]
<?php
// Definir los credenciales de base de datos
$host = "localhost";
$user = "usuario";
$password = "contrasena";
$database = "nombre_de_mi_base_de_datos";
// Crear una conexión de base de datos
$conn = mysql_connect($host,$user,$password) or die("Error: No se pudo conectar a la base de datos: ".mysql_error());
// Una vez conectados, podemos seleccionar que base de datos queremos usar.
mysql_select_db($database,$conn) or die("Error al seleccionar la base de datos: ".mysql_error());

// Obtener las entradas del usuario y desinfectar
$fname = mysql_real_escape_string(filter_var(trim($_POST['fname']), FILTER_SANITIZE_STRING));
$lname = mysql_real_escape_string(filter_var(trim($_POST['lname']), FILTER_SANITIZE_STRING));
$pass = mysql_real_escape_string(filter_var(trim($_POST['pass']), FILTER_SANITIZE_STRING));

// Validar que sea un correo electrónico
if(! $email = filter_var(trim($_POST['email']), FILTER_VALIDATE_EMAIL)))
{
echo "Favor insertar un correo electrónico valido.";
die();
}

$sql = "INSERT INTO `$database`.`users` (
`users_id` ,
`users_fname` ,
`users_lname` ,
`users_email`,
`users_pass`
)
VALUES (
NULL , ‘".$fname."’, ‘".$lname."’, ‘".$email."’, ‘".$pass."’)";

if(mysql_query($sql))
{
echo "Información del usuario guardada exítosamente.";
}else
{
echo "Error: Hubo problemas al guardar los datos, nada se guardó.";
}
// Por ultimo, cerrar la conexión
mysql_close($conn);
?>
[/php]

No es enteramente necesario cerrar la conexión, ya que se hace automaticamente al terminar el proceso, pero puede ser de buena práctica el hacerlo, ya que tal vez necesites entrar a otra base de datos por la razón que sea.

El resultado esperado para este script debería ser:

Información del usuario guardada exítosamente.

7 Comments+ Add Comment

  • Couple of issues:

    CREATE TABLE user – attempts to create primary key index on a field that doesn’t exist: should be:

    PRIMARY KEY (users_id)

    Your current code example has a SQL injection vulnerability on the email field. Also, it’s only validating the email is a string, not an email address.

  • Thanks for pointing that out Richard. I guess that’s the results of writing tired. LOL

    Fixed!

  • [...] we already have our table created and stored data in it: See here: Save Records, we will query that same table for what the user has input on the login [...]

  • i am using xammp mysql
    in the above code snippet
    $conn = mysql_connect($host,$user,$password)

    is it necessary to mention the username and password
    is it possible to connect directly using database name coz i dont know whats my username and password

    pls reply

    • Hi Pratik,

      How about I put it this way. Have you ever connected to your email without a username or password or even your facebook account. It is the same logic. You cannot have a database being administered from anyone, or else it would be chaos. Username and passwords are necessary for security reasons.

      You mention that you have xampp though. Give this a try:
      [php]
      <?php
      $user = ‘root’;
      $password = ”;
      ?>
      [/php]

      Normally that would be the standard for any new xampp installation.

      Hope that helps.

  • hi we are making an Attendance Monitoring System of our school personnel and we want that once the personnel will log in it will automatically record to database the date and time when they log in using their username and password only…please help us we are going to depend it on monday, your help will be highly appreciated..thank you and God bless.

Leave a comment