English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial básico de PHP

Tutorial avanzado de PHP

PHP & MySQL

Manual de referencia PHP

Inserción de datos en MySQL

En este tutorial, aprenderá a insertar registros en tablas de MySQL utilizando PHP.

Insertar datos en la tabla de la base de datos MySQL

Ahora, ya ha entendido cómo crear bases de datos y tablas en MySQL. En este tutorial, aprenderá a ejecutar consultas SQL para insertar registros en las tablas.

“INSERT INTO”“语句用于在数据库表中插入新行。”

“让我们使用带有适当值的INSERT INTO语句来执行一个SQL查询,之后我们将通过将该INSERT查询传递给PHP mysqli_query()函数来执行该INSERT查询,以便在表中插入数据。 下面是一个示例,它通过指定”“first_name”“,”“last_name”“和”“email”“字段的值向”“persons”“表插入新行。”

Ejemplo: forma procedimental

<?php
$link = mysqli_connect("localhost", "root", "", "demo");
 
// Check connection
if($link === false){
    “die("错误:无法连接。 " . mysqli_connect_error());”
}
 
//尝试执行插入查询
“$sql = "INSERT INTO persons (first_name
if(mysqli_query($link, $sql)){
    echo "记录插入成功。";
}
    echo "error: cannot execute $sql." . mysqli_error($link);
}
 
//关闭连接
mysqli_close($link);
?>

Example: object-oriented approach

<?php
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//Check connection
if($mysqli === false){
    ->connect_error);
}
 
//尝试执行插入查询
“$sql = "INSERT INTO persons (first_name
if($mysqli-query($sql) === true)
    echo "记录插入成功。";
}
    echo "error: cannot execute $sql." . $mysqli->error;
}
 
//关闭连接
$mysqli->close();
?>

示例:PDO方式

<?php
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    //将PDO错误模式设置为异常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    ->getMessage());
}
 
//尝试执行插入查询
try{
    “$sql = "INSERT INTO persons (first_name    
    $pdo-“>exec($sql);”
    echo "记录插入成功。";
} catch(PDOException $e){
    die("错误:无法执行 $sql. " . $e->getMessage());
}
 
//关闭连接
unset($pdo);
?>

“如果您还记得”“上一章中的内容”“,则”“id”“字段标记有AUTO_INCREMENT标志。该修饰符告诉MySQL,如果未指定该值,则通过将前一个值增加”1“来自动为该字段分配一个值。”

“在表中插入多行”

“您也可以一次通过单个插入查询将多行插入到表中。为此,请在INSERT INTO语句中包括多个列值列表,其中每行的列值必须用括号括起来并用逗号分隔。”

“让我们在”“persons”“表中再插入几行,如下所示:”

Ejemplo: forma procedimental

<?php
$link = mysqli_connect("localhost", "root", "", "demo");
 
//Check connection
if($link === false){
    “die("错误:无法连接。 " . mysqli_connect_error());”
}
 
//尝试执行插入查询
“$sql = "INSERT INTO persons (first_name
            John
            Clark
            John
            Harry
if(mysqli_query($link, $sql)){
    echo "Record added successfully.";
}
    echo "error: cannot execute $sql." . mysqli_error($link);
}
 
//关闭连接
mysqli_close($link);
?>

Example: object-oriented approach

<?php
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//Check connection
if($mysqli === false){
    ->connect_error);
}
 
//尝试执行插入查询
“$sql = "INSERT INTO persons (first_name
            John
            Clark
            John
            Harry
if($mysqli-query($sql) === true)
    echo "记录插入成功。";
}
    echo "error: cannot execute $sql." . $mysqli->error;
}
 
//关闭连接
$mysqli->close();
?>

示例:PDO方式

<?php
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    //将PDO错误模式设置为异常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    “die("错误:无法连接。 " . $e”->getMessage());
}
 
//尝试执行插入查询
try{
    “$sql = "INSERT INTO persons (first_name
            John
            Clark
            John
            Harry   
    $pdo-“>exec($sql);”
    echo "记录插入成功。";
} catch(PDOException $e){
    die("错误:无法执行 $sql. " . $e->getMessage());
}
 
//关闭连接
unset($pdo);
?>

//“localhost”/“phpmyadmin”/“),并检查”demostraciónla base de datospersonasdatos de la tabla. NotarásIDEl valor de la columna se obtiene sumando el valor anteriorIDel valor aumenta1para asignar automáticamente.

注意: Las declaraciones SQL pueden contener una cantidad ilimitada de saltos de línea, siempre y cuando cualquier salto de línea no destruya palabras clave, valores, expresiones, etc.

Insertar datos desde un formulario HTML a la base de datos

En la sección anterior, aprendimos cómo insertar datos desde un script PHP a la base de datos. Ahora, veremos cómo insertar datos desde una base de datos obtenida de un formulario HTML. Creemos un formulario HTML que se puede usar para insertar nuevos registros enpersonastabla.

Pasos1Crear formulario HTML

Este es un formulario HTML simple que contiene tres campos de texto<input>un campo y un botón de envío.

!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Agregar Registro de Formulario</title>
</head>
<form action="insert.php" method="post">
    <p>
        <label for="firstName">Nombre:</label>
        <input type="text" name="first_name" id="firstName">
    </p>
    <p>
        <label for="lastName">Apellido:</label>
        <input type="text" name="last_name" id="lastName">
    </p>
    <p>
        <label for="emailAddress">Dirección de correo electrónico:</label>
        <input type="text" name="email" id="emailAddress">
    </p>
    <input type="submit" value="Enviar">
</form>
</html>
Prueba y observa‹/›

Pasos2Recuperación e inserción de datos del formulario

En el ejemplo anterior, cuando el usuario hace clic en el botón de envío del formulario HTML, los datos del formulario se envían al archivo "insert.php". El archivo "insert.php" se conecta al servidor de base de datos MySQL, utiliza la variable $_REQUEST de PHP para recuperar los campos del formulario y finalmente ejecuta una consulta de inserción para agregar el registro. Este es el código completo de nuestro archivo "insert.php":

Ejemplo: forma procedimental

<?php
$link = mysqli_connect("localhost", "root", "", "demo");
 
//Check connection
if($link === false){
    die("ERROR: Could not connect." . mysqli_connect_error());
}
 
//Escape user input for safety
$first_name = mysqli_real_escape_string($link, $_REQUEST['first_name']);
$last_name = mysqli_real_escape_string($link, $_REQUEST['last_name']);
$email = mysqli_real_escape_string($link, $_REQUEST['email']);
 
//尝试执行插入查询
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('$first_name', '$last_name', '$email')";
if(mysqli_query($link, $sql)){
    echo "Record added successfully.";
}
    echo "error: cannot execute $sql." . mysqli_error($link);
}
 
//关闭连接
mysqli_close($link);
?>

Example: object-oriented approach

<?php
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//Check connection
if($mysqli === false){
    die("error: cannot connect." . $mysqli->connect_error);
}
 
//Escape user input for safety
$first_name = $mysqli->real_escape_string($_REQUEST['first_name']);
$last_name = $mysqli->real_escape_string($_REQUEST['last_name']);
$email = $mysqli->real_escape_string($_REQUEST['email']);
 
//尝试执行插入查询
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('$first_name', '$last_name', '$email')";
if($mysqli-query($sql) === true)
    echo "记录插入成功。";
}
    echo "error: cannot execute $sql." . $mysqli->error;
}
 
//关闭连接
$mysqli->close();
?>

示例:PDO方式

<?php
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    //将PDO错误模式设置为异常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("错误:无法连接。" . $e->getMessage());
}
 
//尝试执行插入查询
try{
    //CREATE PREPARE语句
    $sql = "INSERT INTO persons (first_name, last_name, email) VALUES (:first_name, :last_name, :email)";
    $stmt = $pdo->prepare($sql);
    
    //将参数绑定到语句
    $stmt->bindParam(':first_name', $_REQUEST['first_name']);
    $stmt->bindParam(':last_name', $_REQUEST['last_name']);
    $stmt->bindParam(':email', $_REQUEST['email']);
    
    //执行准备好的语句
    $stmt->execute();
    echo "记录插入成功。";
} catch(PDOException $e){
    die("错误:无法执行 $sql. " . $e->getMessage());
}
 
// Close connection
unset($pdo);
?>

在下一章中,我们将扩展此插入查询示例,并通过实现准备好的语句来进一步提高安全性和性能,从而将其进一步发展。

注意:mysqli_real_escape_string()函数转义字符串中的特殊字符并创建合法的SQL字符串以提供防止SQL注入的安全性。

这是在MySQL数据库表中插入表单数据的非常基本的示例。您可以扩展此示例,使其更具交互性,方法是将验证添加到用户输入中,然后再将其插入数据库表。请查看有关PHP表单验证的教程,以了解有关使用PHP 清理和验证用户输入的更多信息。