PHP 菜鳥教程

PHP 高級(jí)教程

PHP & MySQL

PHP 參考手冊

PHP MySQL 插入數(shù)據(jù)

在本教程中,您將學(xué)習(xí)如何使用PHP在MySQL表中插入記錄。

將數(shù)據(jù)插入MySQL數(shù)據(jù)庫表

現(xiàn)在,您已經(jīng)了解了如何在MySQL中創(chuàng)建數(shù)據(jù)庫和表。在本教程中,您將學(xué)習(xí)如何執(zhí)行SQL查詢以將記錄插入表中。

INSERT INTO語句用于在數(shù)據(jù)庫表中插入新行。

讓我們使用帶有適當(dāng)值的INSERT INTO語句來執(zhí)行一個(gè)SQL查詢,之后我們將通過將該INSERT查詢傳遞給PHP mysqli_query()函數(shù)來執(zhí)行該INSERT查詢,以便在表中插入數(shù)據(jù)。 下面是一個(gè)示例,它通過指定first_name,last_nameemail字段的值向persons表插入新行。

示例:面向過程方式

<?php
$link = mysqli_connect("localhost", "root", "", "demo");
 
// 檢查連接
if($link === false){
    die("錯(cuò)誤:無法連接。 " . mysqli_connect_error());
}
 
//嘗試執(zhí)行插入查詢
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Peter', 'Parker', 'peterparker@mail.com')";
if(mysqli_query($link, $sql)){
    echo "記錄插入成功。";
} else{
    echo "錯(cuò)誤:無法執(zhí)行 $sql. " . mysqli_error($link);
}
 
//關(guān)閉連接
mysqli_close($link);
?>

示例:面向?qū)ο蠓绞?/h3>
<?php
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//檢查連接
if($mysqli === false){
    die("ERROR: Could not connect. " . $mysqli->connect_error);
}
 
//嘗試執(zhí)行插入查詢
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Peter', 'Parker', 'peterparker@mail.com')";
if($mysqli->query($sql) === true){
    echo "記錄插入成功。";
} else{
    echo "錯(cuò)誤:無法執(zhí)行 $sql. " . $mysqli->error;
}
 
//關(guān)閉連接
$mysqli->close();
?>

示例:PDO方式

<?php
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    //將PDO錯(cuò)誤模式設(shè)置為異常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("ERROR: Could not connect. " . $e->getMessage());
}
 
//嘗試執(zhí)行插入查詢
try{
    $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Peter', 'Parker', 'peterparker@mail.com')";    
    $pdo->exec($sql);
    echo "記錄插入成功。";
} catch(PDOException $e){
    die("錯(cuò)誤:無法執(zhí)行 $sql. " . $e->getMessage());
}
 
//關(guān)閉連接
unset($pdo);
?>

如果您還記得上一章中的內(nèi)容,則id字段標(biāo)記有AUTO_INCREMENT標(biāo)志。該修飾符告訴MySQL,如果未指定該值,則通過將前一個(gè)值增加1來自動(dòng)為該字段分配一個(gè)值。

在表中插入多行

您也可以一次通過單個(gè)插入查詢將多行插入到表中。為此,請?jiān)贗NSERT INTO語句中包括多個(gè)列值列表,其中每行的列值必須用括號(hào)括起來并用逗號(hào)分隔。

讓我們在persons表中再插入幾行,如下所示:

示例:面向過程方式

<?php
$link = mysqli_connect("localhost", "root", "", "demo");
 
//檢查連接
if($link === false){
    die("錯(cuò)誤:無法連接。 " . mysqli_connect_error());
}
 
//嘗試執(zhí)行插入查詢
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES
            ('John', 'Rambo', 'johnrambo@mail.com'),
            ('Clark', 'Kent', 'clarkkent@mail.com'),
            ('John', 'Carter', 'johncarter@mail.com'),
            ('Harry', 'Potter', 'harrypotter@mail.com')";
if(mysqli_query($link, $sql)){
    echo "記錄添加成功。";
} else{
    echo "錯(cuò)誤:無法執(zhí)行 $sql. " . mysqli_error($link);
}
 
//關(guān)閉連接
mysqli_close($link);
?>

示例:面向?qū)ο蠓绞?/h3>
<?php
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//檢查連接
if($mysqli === false){
    die("ERROR: Could not connect. " . $mysqli->connect_error);
}
 
//嘗試執(zhí)行插入查詢
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES
            ('John', 'Rambo', 'johnrambo@mail.com'),
            ('Clark', 'Kent', 'clarkkent@mail.com'),
            ('John', 'Carter', 'johncarter@mail.com'),
            ('Harry', 'Potter', 'harrypotter@mail.com')";
if($mysqli->query($sql) === true){
    echo "記錄插入成功。";
} else{
    echo "錯(cuò)誤:無法執(zhí)行 $sql. " . $mysqli->error;
}
 
//關(guān)閉連接
$mysqli->close();
?>

示例:PDO方式

<?php
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    //將PDO錯(cuò)誤模式設(shè)置為異常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("錯(cuò)誤:無法連接。 " . $e->getMessage());
}
 
//嘗試執(zhí)行插入查詢
try{
    $sql = "INSERT INTO persons (first_name, last_name, email) VALUES
            ('John', 'Rambo', 'johnrambo@mail.com'),
            ('Clark', 'Kent', 'clarkkent@mail.com'),
            ('John', 'Carter', 'johncarter@mail.com'),
            ('Harry', 'Potter', 'harrypotter@mail.com')";   
    $pdo->exec($sql);
    echo "記錄插入成功。";
} catch(PDOException $e){
    die("錯(cuò)誤:無法執(zhí)行 $sql. " . $e->getMessage());
}
 
//關(guān)閉連接
unset($pdo);
?>

現(xiàn)在,轉(zhuǎn)到phpMyAdmin(http://localhost/phpmyadmin/),并檢查演示數(shù)據(jù)庫中的人員表數(shù)據(jù)。您會(huì)發(fā)現(xiàn)ID列的值是通過將前一個(gè)ID的值增加1來自動(dòng)分配的。

注意: SQL語句內(nèi)可以發(fā)生任意數(shù)量的換行符,但前提是任何換行符都不會(huì)破壞關(guān)鍵字,值,表達(dá)式等。

從HTML表單將數(shù)據(jù)插入數(shù)據(jù)庫

在上一節(jié)中,我們學(xué)習(xí)了如何從PHP腳本將數(shù)據(jù)插入數(shù)據(jù)庫?,F(xiàn)在,我們將看到如何將數(shù)據(jù)插入從HTML表單獲得的數(shù)據(jù)庫中。讓我們創(chuàng)建一個(gè)HTML表單,該表單可用于將新記錄插入人員表。

步驟1:建立HTML表單

這是一個(gè)簡單的HTML表單,其中包含三個(gè)文本<input>字段和一個(gè)提交按鈕。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Add Record Form</title>
</head>

<form action="insert.php" method="post">
    <p>
        <label for="firstName">First Name:</label>
        <input type="text" name="first_name" id="firstName">
    </p>
    <p>
        <label for="lastName">Last Name:</label>
        <input type="text" name="last_name" id="lastName">
    </p>
    <p>
        <label for="emailAddress">Email Address:</label>
        <input type="text" name="email" id="emailAddress">
    </p>
    <input type="submit" value="Submit">
</form>

</html>
測試看看?/?

步驟2:檢索和插入表單數(shù)據(jù)

在上面的示例中,當(dāng)用戶單擊添加記錄HTML表單的提交按鈕時(shí),表單數(shù)據(jù)將發(fā)送到“ insert.php”文件?!?insert.php”文件連接到MySQL數(shù)據(jù)庫服務(wù)器,使用PHP $_REQUEST變量檢索表單字段,最后執(zhí)行插入查詢以添加記錄。這是我們的“ insert.php”文件的完整代碼:

示例:面向過程方式

<?php
$link = mysqli_connect("localhost", "root", "", "demo");
 
//檢查連接
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
 
//為了安全起見,轉(zhuǎn)義用戶輸入
$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']);
 
//嘗試執(zhí)行插入查詢
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('$first_name', '$last_name', '$email')";
if(mysqli_query($link, $sql)){
    echo "記錄添加成功。";
} else{
    echo "錯(cuò)誤:無法執(zhí)行 $sql. " . mysqli_error($link);
}
 
//關(guān)閉連接
mysqli_close($link);
?>

示例:面向?qū)ο蠓绞?/h3>
<?php
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//檢查連接
if($mysqli === false){
    die("錯(cuò)誤:無法連接。 " . $mysqli->connect_error);
}
 
//為了安全,轉(zhuǎn)義用戶輸入
$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']);
 
//嘗試執(zhí)行插入查詢
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('$first_name', '$last_name', '$email')";
if($mysqli->query($sql) === true){
    echo "記錄插入成功。";
} else{
    echo "錯(cuò)誤:無法執(zhí)行 $sql. " . $mysqli->error;
}
 
//關(guān)閉連接
$mysqli->close();
?>

示例:PDO方式

<?php
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    //將PDO錯(cuò)誤模式設(shè)置為異常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("錯(cuò)誤:無法連接。" . $e->getMessage());
}
 
//嘗試執(zhí)行插入查詢
try{
    //CREATE PREPARE語句
    $sql = "INSERT INTO persons (first_name, last_name, email) VALUES (:first_name, :last_name, :email)";
    $stmt = $pdo->prepare($sql);
    
    //將參數(shù)綁定到語句
    $stmt->bindParam(':first_name', $_REQUEST['first_name']);
    $stmt->bindParam(':last_name', $_REQUEST['last_name']);
    $stmt->bindParam(':email', $_REQUEST['email']);
    
    //執(zhí)行準(zhǔn)備好的語句
    $stmt->execute();
    echo "記錄插入成功。";
} catch(PDOException $e){
    die("錯(cuò)誤:無法執(zhí)行 $sql. " . $e->getMessage());
}
 
// Close connection
unset($pdo);
?>

在下一章中,我們將擴(kuò)展此插入查詢示例,并通過實(shí)現(xiàn)準(zhǔn)備好的語句來進(jìn)一步提高安全性和性能,從而將其進(jìn)一步發(fā)展。

注意:mysqli_real_escape_string()函數(shù)轉(zhuǎn)義字符串中的特殊字符并創(chuàng)建合法的SQL字符串以提供防止SQL注入的安全性。

這是在MySQL數(shù)據(jù)庫表中插入表單數(shù)據(jù)的非常基本的示例。您可以擴(kuò)展此示例,使其更具交互性,方法是將驗(yàn)證添加到用戶輸入中,然后再將其插入數(shù)據(jù)庫表。請查看有關(guān)PHP表單驗(yàn)證的教程,以了解有關(guān)使用PHP 清理和驗(yàn)證用戶輸入的更多信息。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清