国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

??MySQL一鍵導(dǎo)入導(dǎo)出(支持Composer加載)

zjkal?

MysqlHelper 是一個便捷的通過PHP導(dǎo)入和導(dǎo)出Mysql數(shù)據(jù)庫表結(jié)構(gòu)和數(shù)據(jù)的工具,可以快速實現(xiàn)mysql的數(shù)據(jù)庫的導(dǎo)入和導(dǎo)出.

??特性

  • 簡單易用: 僅依賴mysqlli擴展,開箱即用
  • 靈活操作: 兼容主流框架,使用更方便
  • 長期維護: 作者為自由職業(yè)者,保證項目的長期穩(wěn)定持續(xù)更新

??安裝

通過Composer導(dǎo)入類庫

composer require zjkal/mysql-helper

??使用文檔

1. 實例化

方式一: 常規(guī)方法

use zjkal\MysqlHelper;

$mysql = new MysqlHelper('root', 'root', 'testdatabase', '127.0.0.1', '3306', 'utf8mb4', 'wp_');

方式二: 實例化后,通過setConfig方法設(shè)置數(shù)據(jù)庫配置

$mysql = new MysqlHelper();
$mysql->setConfig(['username' => 'root', 'password' => 'root', 'database' => 'testdatabase']);

MysqlHelper針對常用的框架做了兼容,可以直接使用框架的數(shù)據(jù)庫配置, 比如ThinkPHP框架或Laravel框架

$mysql = new MysqlHelper();
$config = config('database.connections.mysql');
$mysql->setConfig($config);

2. 導(dǎo)出數(shù)據(jù)

//導(dǎo)出數(shù)據(jù)庫(包含表結(jié)構(gòu)和數(shù)據(jù))
$mysql->exportSqlFile('test.sql');

//僅導(dǎo)出數(shù)據(jù)庫表結(jié)構(gòu)
$mysql->exportSqlFile('test.sql', false);

//導(dǎo)出指定表的結(jié)構(gòu)和數(shù)據(jù)
$mysql->exportSqlFile('test.sql', true, ['table1', 'table2']);

3. 導(dǎo)入數(shù)據(jù)

  • sql文件中的表前綴需要使用__PREFIX__占位符代替
  • 如果實例化時,已經(jīng)設(shè)置了數(shù)據(jù)庫前綴,則可以不用傳入第二個參數(shù)
//導(dǎo)入數(shù)據(jù)庫
$mysql->importSqlFile('test.sql');

//導(dǎo)入數(shù)據(jù)庫,并自動替換表前綴
$mysql->importSqlFile('test.sql', 'wp_');
1308 2 2
2個評論

PHP甩JAVA一條街

1個G的sql,導(dǎo)入穩(wěn)定嗎?

  • zjkal? 2023-09-03

    沒測試過, 這個包的初衷主要是為webman-admin寫插件的時候, 導(dǎo)入install.sql文件

MrMarko

php8.1 用這個有bug 出現(xiàn)了
ErrorException: mysqli::real_escape_string(): Passing null to parameter

  • zjkal? 2023-09-21

    導(dǎo)入還是導(dǎo)出? 能不能把完整的錯誤給我粘一下, 我去找找問題

  • zjkal? 2023-09-21

    對了, 會不會哪個參數(shù)傳了null呢? 比如host, username, password, port等

  • MrMarko 2023-09-22

    導(dǎo)出, 沒有null的 我都打印了,你可以嘗試裝下8試試就知道了, 我修改過現(xiàn)在是可以用的了, 是因為php8不支持了這個操作

  • MrMarko 2023-09-22

    我把你的注釋了 改成這樣子了
    // if ($withData) {
    // // 導(dǎo)出表數(shù)據(jù)
    // fwrite($outputFile, "-- 表數(shù)據(jù):$table\n");
    // $result = $conn->query("SELECT FROM $table");
    // while ($row = $result->fetch_assoc()) {
    // dump($row);
    // $columns = implode("','", array_map([$conn, 'real_escape_string'], array_values($row)));
    // fwrite($outputFile, "INSERT INTO $table VALUES ('$columns');\n");
    // }
    // if (empty($row)) {
    // fwrite($outputFile, "/
    " . $table . "表沒有數(shù)據(jù) /\n");
    // }
    // }
    if ($withData) {
    // 導(dǎo)出表數(shù)據(jù)
    fwrite($outputFile, "-- 表數(shù)據(jù):$table\n");
    $result = $conn->query("SELECT
    FROM $table");
    if ($result) { // 檢查查詢是否成功執(zhí)行
    while ($row = $result->fetch_assoc()) {
    $escapedValues = array_map(function ($value) use ($conn) {
    return $conn->escape_string(strval($value));
    }, $row);
    $columns = implode("','", $escapedValues);
    $insertStatement = "INSERT INTO $table VALUES ('$columns');\n";
    fwrite($outputFile, $insertStatement);
    }
    if ($result->num_rows === 0) {
    fwrite($outputFile, "/ " . $table . "表沒有數(shù)據(jù) /\n");
    }
    $result->free(); // 釋放結(jié)果集內(nèi)存
    } else {
    fwrite($outputFile, "/ 查詢失敗或者表不存在 /\n");
    }
    }

  • zjkal? 2023-09-23

    有點奇怪, 我剛剛又用PHP8.0和PHP8.1都做了測試, 可以正常導(dǎo)出, 難道和mysql版本有關(guān)嗎? 你用的是什么版本的mysql呢?

  • MrMarko 2023-09-23

    mysql 8.1.0

  • zjkal? 2023-09-23

    我已經(jīng)查到大概問題了, 也參考你的代碼做了一些修改, 跟php版本不大, 主要是這個函數(shù)mysql_real_escape_string, 莫名其妙的就是有問題, 也是從網(wǎng)上搜了挺多人遇到的錯誤才發(fā)現(xiàn)的. 所以不再使用它了.

  • MrMarko 2023-09-23

    mysql_real_escape_string 這個函數(shù)我一開始就說了呀 就是這個函數(shù)的問題呀

  • zjkal? 2023-09-23

    就是就是, 你說的對, 是我自己陷入了PHP版本的差異中

  • zjkal? 2023-09-23

    我已經(jīng)發(fā)新版了, composer update一下繼續(xù)用吧, 真心感謝

zjkal?

510
積分
0
獲贊數(shù)
0
粉絲數(shù)
2023-03-02 加入
??