eclipse連接mysql數據庫步驟:html連接mysql數據庫PHP

將mock模擬數據插入到Mysql數據庫

有時候,我們測試網站時需要大量的模擬數據,但是php並沒有提供生成模擬數據的工具,這時候我想到mockjs是可以生成模擬數據的,那能不能把Mockjs生成的模擬數據填充到數據庫中呢?

於是開始動手:

例如mysql數據庫表是如下字段:

將mock模擬數據插入到Mysql數據庫

於是查閱mock文檔,建立一個文件mock.php,模擬了以下數據:

//mock.php
//先引入mockjs和jquery(後面會用到)
<script src="/static/assets/vendors/mockjs/mock.js"></script>
<script src="/static/assets/vendors/jquery/jquery.js"></script>
<script>
const login = Mock.mock({
'list|5':[{ //模擬生成一個數組,數組長度為5,內容為5個對象,對象的具               體內容如下
    'id':null,
    'author':'@cname', //生成中文姓名
    'email':'@email', //生成郵箱
    'created':'@datetime("yyyy-MM-dd HH:mm:ss")', //生成時間
    'content':'@cparagraph(1)', //生成一段中文段落
    'status|1':['approved','rejected','held'], //三者選其一
    'post_id|+1':1, //從1開始,步長為1,增加數字
    'parent_id|1':[1,2,3,4] //生成1,2,3,4其中一個
}]
})

生成後的數據是一個對象,下一步就是將數據插入到mysql數據庫了,要插入數據庫,是不能用靜態頁面完成的,這裡我們新建一個sql.php頁面,這裡我會考慮,不是已經生成了模擬數據嗎,還新建頁面幹什麼,直接在mock.php中把獲取數據轉化成mysql字符串,執行數據庫的增加操作不就行了嗎?

一開始我也是這麼想的,但是發現真正操作的時候,有個問題,那就是mockjs生成的數據是在js裏面生成的,代碼在<script>標籤裏面,我怎麼把這個數據取出來放到php標籤里呢?換句話說,就是怎麼在php中取得js裏面的變量?

只有在mock.php向sql.php提交數據才可以實現,提交的數據就是我們模擬的數據,然後通過sql.php連接數據庫,將數據插入到數據庫。

這裡要注意,提交的數據必須為json格式的字符串,不能直接提交對象或者數組,不然sql.php是很難直接處理js對象的。

//mock.php  接上面
//JSON.parse(jsonstr); //可以將json字符串轉換成json對象
//JSON.stringify(jsonobj); //可以將json對象轉換成json對符串
data=JSON.stringify(login.list); 
$.post('/sql.php',{comments:data},function(res){ //以post方式提交數據
    document.write(res)  //打印返回值到頁面,不寫也可以
})
</script>

下面寫sql.php

<?php
header('Content-type:text/html;charset=utf8');
//連接數據庫
define('DB_USER','root');
define('DB_HOST','localhost');
const DB_PASS='root';
const DB_NAME='root';
$con=mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME) or die('數據庫連接失敗');

mysqli_query($con,'set names utf8');
//封裝sql執行函數
function xiu_execute($sql){
    global $con; // 獲取數據庫連接的全局變量
    $query = mysqli_query($con, $sql);  //執行數據庫操作sql語句
    if (!$query) {
        // 查詢失敗
        return false;
    }
    // mysqli_affected_rows() 函數返回前一次 MySQL 操作(SELECT、INSERT、UPDATE、REPLACE、DELETE)所影響的記錄行數。
    return mysqli_affected_rows($con);
​
}
​
/**
 * PHP json_encode() 用於對變量進行 JSON 編碼,該函數如果執行成功返回 JSON 數據,否則返回 FALSE 。
 * PHP json_decode ($json_string [,$assoc = false [, $depth = 512 [, $options = 0 ]]])
 * 函數用於對 JSON 格式的字符串進行解碼,並轉換為 PHP 變量,assoc: 當該參數為 TRUE 時,將返回數組,FALSE 時返回對象。
 */
if(!empty($_POST['comments'])){ //判斷接收的數據是否為空
   $comments=json_decode($_POST['comments'],true) ; //將接收到的json字符串數據解碼為關聯數組
   $sql="insert into comments values"; //定義初始查詢語句
    foreach($comments as $comment){ //遍歷解碼後的關聯數組,獲取每一項每個字段的數據
        $author=$comment['author'];
        $email=$comment['email'];
        $created=$comment['created'];
        $content=$comment['content'];
        $status=$comment['status'];
        $post_id=$comment['post_id'];
        $parent_id=$comment['parent_id'];
        // 將得到的數據拼接,插入多條sql語句
        $sql.="(null,'{$author}','{$email}','{$created}','{$content}','{$status}',{$post_id},{$parent_id}),";
    }
    $sql=substr($sql,0,-1).";"; //將拼接完後的最後一個逗號刪除並加上冒號
    execute($sql); //執行插入操作
    echo $sql; //返回拼接後的字符串,用以調試是否出錯!

將這兩個文件放在php服務器根目錄上,訪問mock.php,即可批量插入數據,如果要插入更多數據,只需要將

『list|5』中的5修改為你想要插入的數據條數即可!

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/224047.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-09 14:35
下一篇 2024-12-09 14:36

相關推薦

發表回復

登錄後才能評論