在php中的共享主机上创建并导入mysql数据库

2024-03-26

我正在尝试编写 php 脚本:

  • 连接到 mysql
  • 创建数据库
  • 创建用户和密码
  • 将用户添加到数据库
  • 将准备好的sql文件导入数据库

问题是它将位于共享主机上(我正在努力使其通用并与不同的主机一起使用)。我猜数据库和 db 用户将在共享主机上以我的帐户名(我用于 ftp、登录控制面板等的帐户名)为前缀?类似于 mylogin 的东西_数据库名称和 mylogin_数据库用户。例如,它在 cpanel 中可见 - 当我添加数据库时,我输入其名称,创建后 cpanel 将其显示为 mylogin_一些数据库。如何使我的脚本在多个不同的共享主机上使用它 - 根据我的主登录自动添加我的前缀?

现在使用这样的代码(不知道它是否有效,这正是我想到的):

<?php
mysql_connect("host", "user", "password"); // Connection to MySQL

$query = "CREATE DATABASE somedb;
USE somedb;
SOURCE path/to/sqlfile.sql;
CREATE USER someuser IDENTIFIED BY PASSWORD 'somepass';
GRANT SELECT,INSERT,UPDATE,DELETE ON somedb.* TO 'someuser'@'host';";

$arr= explode( ';', $query );
foreach( $arr as $command )
{
mysql_query( $command );
}  
mysql_close(); // Disconnection from MySQL
?>

亲吻原则 http://en.wikipedia.org/wiki/KISS_principle:只使用 phpMyAdmin 吗?几乎可以肯定它已安装。如果不是,安装它 http://phpmyadmin.net/.

其进口能力非常强大。如果您的数据库太大,请对其进行 gzip。如果它仍然太大,请尝试将其分成几块。我怀疑您是否需要将其作为单个大交易进行转移。你?


在第一条评论的解释之后,好吧,就到这里。这是我非常简单的脚本,可以满足您的要求。但它不考虑分隔符:一个查询 == 一行。

<link rel="stylesheet" href="style/contents.css"/>
<?

function timesanitize($v) {
    if ($v > 0)
        return round($v, 4);
    else
        return 0;
}

$startmt = microtime();
include_once 'include/db.php';
$f = fopen("db.sql","r");
echo dbGetEngine() . "<br>";
echo "<ul>";
do {
    $l = rtrim(fgets($f));
    if (strlen($l) == 0)
        continue;
    if (substr($l, 0, 1) == '#')
        continue;
    $l = str_replace(
        array("\\n"),
        array("\n"),
        $l);
    if (dbGetEngine() == "pgsql")
        $l = str_replace(
            array("IF NOT EXISTS", "LONGBLOB"),
            array("", "TEXT"),
             $l);
    try {
        echo "<li>".nl2br(htmlspecialchars($l));
        $mt = microtime();
        $db->query($l);
        echo "<ul><li>ok - " . timesanitize(microtime() - $mt) . "</ul>";
    } catch (PDOException $e) {
        echo "<ul><li>".$e->getMessage() . "</ul>";
    }
} while (!feof($f));
fclose($f);

echo 'total: ' . timesanitize(microtime() - $startmt);
?>

它还输出每个查询花费多长时间的小统计信息。它基于 PDO;我相信PDO是在PHP5.1或PHP5.2中引入的。我认为修改它以直接使用应该是微不足道的mysql_*()函数,如果出于某种原因你更喜欢它。

再说一遍:是的,我知道这很糟糕。但只要它对我有用(tm),也可能对你有用......:-)


要完成代码,这里有include/db.php和一个样品include/config.php:

include/db.php:

<?
include_once 'include/config.php';

try {

        $attribs =  
                array(
                        PDO::ATTR_PERSISTENT => $config['db']['persistent'],
                        PDO::ATTR_ERRMODE => $config['db']['errormode']
                );


        $db = new PDO(
                $config['db']['uri'],
                $config['db']['user'],
                $config['db']['pass'],
                $attribs
        );
        $db->query("SET NAMES 'utf8'");
        $db->query("SET CHARACTER SET 'utf8'");

} catch (PDOException $e) {
        print "Error!: " . $e->getMessage() . "<br/>";
        die();
}

function dbGetEngine() {
        global $config;
        return substr($config['db']['uri'], 0, strpos($config['db']['uri'], ':'));
}
?>

include/config.php:

<?

//$config['db']['uri'] = 'sqlite:' . realpath('.') . '/site.db'; // PDO's database access URI
$config['db']['uri'] = 'mysql:host=localhost;dbname=sitedb'; // server should be : 195.78.32.7
//$config['db']['uri'] = 'pgsql:host=localhost;dbname=sitedb';
$config['db']['user'] = 'user_goes_here'; // database username
$config['db']['pass'] = 'pass_goes_here'; // database password
$config['db']['persistent'] = false; // should the connection be persistent
$config['db']['errormode'] = PDO::ERRMODE_EXCEPTION; // PDO's error mode

?>

其中包括 SQLite、MySQL 和 PostgreSQL 的示例连接字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在php中的共享主机上创建并导入mysql数据库 的相关文章

  • 在 Laravel 中将自定义/新类文件放在哪里?

    我有关于如何使用 Yelp Fusion API 的 PHP 示例 它用OAuth php file https github com Yelp yelp api blob master v2 php lib OAuth php有几个班级
  • PHP 中给定日期的下一个工作日

    有人有一个 PHP 代码片段来计算给定日期的下一个工作日吗 例如 需要如何转换 YYYY MM DD 才能找到下一个工作日 例子 对于 03 04 2011 DD MM YYYY 下一个工作日是 04 04 2011 对于 2011 年 4
  • mongodb从不同数据库中选择

    我有大约 200 个 mongodb 数据库 每个数据库都有一个名为 Group 的集合 在该集合中有一个名为 meldingId 的字段 是否可以进行一个 mongodb 查询来查找不同数据库中的所有值 我设法通过 selectDB da
  • 如何在codeigniter中插入具有多个单选名称的单选按钮值?

    我正在尝试使用 codeigniter 进行在线测验 其中有一个针对某些主题的动态测验 用户可以在每个问题中添加问题和多项选择答案 我如何获得每个问题的每个多项选择答案中每个答案的值 p p
  • 简单搜索:使用 CodeIgniter 将表单变量传递到 URI

    我的每个页面上都有一个搜索表单 如果我使用表单助手 它默认为 POST 我希望搜索词显示在 URI 中 http example com search KEYWORD 我已经在谷歌上搜索了大约一个小时 但没有结果 我只找到了有关如何进行的文
  • yii2 无线电内联 Html 帮助器

    我在 yii2 中有这个 radioList Html radioList abc null new class gt form control input sm 它生成这个 div class radio 但我想要 div class r
  • PHP 的同义词库类或 API [编辑]

    TL DR 摘要 我需要一个命令行应用程序 我可以用它来获取同义词和其他相关单词 它需要是多语言的并且跨平台工作 任何人都可以为我推荐一个合适的程序 或者帮助我使用我已经找到的程序吗 谢谢 更长的版本 我的任务是用 PHP 编写一个系统 该
  • PHP比较两个字符串的随机位置

    PHP比较两个字符串 示例我得到了一串数字 1 2 2 1 and another is 2 1 2 1 结果是 true 因为它只是 1 2 2 1 和 2 2 1 1 的位置洗牌 但如果该值为 1 2 2 2 and another i
  • PHP—array_merge_recursive() - 相同键没有数组

    php a php gt data1 tag gt div classes gt 1 2 3 php gt data2 tag gt section classes gt 2 3 4 5 6 php gt result array merg
  • 无法在 Mac 上启动 MySQL

    使用 Brew 安装后 我无法运行 MySQL 我使用的是 OS X El Capitan 版本 10 11 3 和 MySQL Server 版本 5 7 11 当我启动服务器时 我收到 启动 MySQL 错误 服务器退出而不更新 PID
  • 在我的 php 网络服务器内副本中启用 mysqli

    正如这里所讨论的 mysqli 直接运行时有效 但通过 js ajax 运行时无效 https stackoverflow com questions 31523601 mysqli works when run directly but
  • 支持通过 OAuth 进行 Facebook/Twitter 身份验证的 CAS 服务器

    我正在寻找一个支持 Facebook Twitter 通过 OAuth 进行单点登录身份验证的 CAS 服务器 我检查过 JASIG CAS 服务器 但它看起来不支持它们 我的 java web 应用程序基于 Spring Security
  • 如何在 MySQL 中测试 Select for Update

    我正在表演SELECT FOR UPDATE或 InnoDB 表的行级锁定 我的目的是只有一个请求可以读取同一行 因此 如果两个用户同时请求相同的数据 其中只有一个人获取数据 即第一个触发查询的人 但是我如何测试锁定是否已放置 因为我正在通
  • 使用 OpenSSL 在 PHP 中进行 AES 加密/在 Node.js 中进行解密

    我正在使用 PHP 和 Nodejs 使用 OpenSSL 进行对称加密 PHP 使用 OpenSSL 库 Node js 解密基于实现的加密 问题是 Node js 中的解密文本只是部分正确 PHP 加密函数 function encry
  • 如何在 PHP 中使用 file_get_contents 获取图像的 MIME 类型

    我需要获取图像的 MIME 类型 但我只有图像的正文file get contents 是否有可能获取 MIME 类型 是的 你可以这样得到它 file info new finfo FILEINFO MIME TYPE mime type
  • 获取特定月份/年份的第一天

    有没有比以下更好的方法返回特定月份 年份的第一天的日期 month date m year date Y from date Y m d mktime 0 0 0 month 1 year 这在计算上并不完全优雅 但我喜欢它 因为它非常可读
  • mysql 中的二进制、十六进制和八进制值

    我对在 mysql 数据库中使用二进制 十六进制和八进制系统非常感兴趣 首先 请给我一个建议 为什么我们在存储信息时需要它们 因为信息太多 或者为什么 另外 哪种类型的值必须存储在标记系统中 另外这里还有像 这是例子 gt SELECT 5
  • 用 pandas DataFrame 替换 mysql 数据库表中的行

    Python 版本 2 7 6 熊猫版本 0 17 1 MySQLdb 版本 1 2 5 在我的数据库中 PRODUCT 我有一张桌子 XML FEED 表 XML FEED 很大 数百万条记录 我有一个 pandas DataFrame
  • PHP MySql 百分比

    我的问题是关于百分比 我不是专家 所以我会尽力以更好的方式进行解释 我的 mysql 服务器中有一个表 假设有 700 条记录 如下所示 Name country language Birth Lucy UK EN 1980 Mari Ca
  • 如何从 Laravel 中的表中选择所有列名称?

    我试图从表中获取所有列名Teller 功能 public function getTableColumns tables return DB select DB raw SELECT COLUMN NAME DATA TYPE COLUMN

随机推荐

  • rubyonrails 更新到 gem 1.8.1 时出错

    我将gem更新到最新的1 8 1 现在当我使用rails命令时 我收到如下错误 NOTE Gem Specification default executable is deprecated with no replacement It w
  • 艺术::ConditionVariable::WaitHoldingLocks(艺术::线程*)

    我们的移动应用程序已发布在 Google Play 商店中 崩溃和 ANR 报告在 Firebase Crashlytics 中生成 出现如下所示的ANR 0 libc so 系统调用 28 1 libart so 艺术 Condition
  • SolrNET - 从 Nuget 拉取时无法加载文件或程序集“HttpWebAdapters”

    我正在使用 Nuget 在 ASP NET MVC 项目中获取最新版本的 SolrNET 和 StructureMap SolrNetIntegration x IncludeRegistry new SolrNetRegistry Sol
  • 如何以编程方式缩放 UIScrollView?

    我想以基类不支持的方式缩放和取消缩放 例如 在收到双击时 在玩过东西并使其正常工作后 我正在回答我自己的问题 Apple 在其有关如何处理双击的文档中提供了一个非常简单的示例 进行编程缩放的基本方法是您自己执行此操作 然后告诉 UIScro
  • 按 IN 运算符中指定的特定顺序选择 ID

    我想尝试以特定顺序选择一组特定的数字 以便与循环一起使用 SELECT ID FROM filter WHERE id in 87 97 117 52 240 76 141 137 157 255 186 196 133 175 153 2
  • 如何清除 Angular Reactive Forms 中的 FormArray

    我正在重置表单 它重置整个表单 但 FormArray 除外 创建表单并在其中声明 formArray createForm this invoiceForm this formBuilder group name Validators r
  • 未使用 setImageURI() 在 ImageView 中设置图像

    创建自己的相机 因为我需要对焦来拍照 相机工作正常 正如预期的那样 通过URI活动之间 I ve ImageView in Next Screen which i used to set the Image with imgView set
  • python 3 中随机游走的奇怪结果?

    我刚刚开始学习 python 并且在打印 3 维随机游走的新位置时遇到问题 没有弹出错误 但是很明显打印的输出 x y z 是不合理的 当逐步模拟随机游走时 我假设每次只应更改 x y z 中的一个值 但输出中似乎没有 我正在尝试调试它 但
  • 如何在 WPF 中对 DataGrid 列标题进行分组

    是否可以在 WPF 数据网格中执行此操作 A header B Header A1Header A2Header B1Header B2Header A1Data A2 Data B1 Data B2 Data A1Data A2 Data
  • 如何在 Eclipse 中使用 Antlr4 Ide 查看实时解析树?

    我是 Antlr4 的新手 但我知道 Eclipse 存在一个插件 我有一个简单的问题 创建 g4 文件后 如何可视化实时解析树以便查看输入表达式的树 谢谢 在 Eclipse 中安装 Antlr4Ide 插件后 窗口 gt 显示视图 gt
  • 从 Fiori 列表报告导航到标准应用程序(例如热点)?

    我已经根据之前创建的 CDS 视图创建了列表报告 Fiori 应用程序 是否有可能在现有和 或附加 CDS 视图中使用一些注释来创建供应商编号上的热点智能字段 IE 当我点击它时 它会将我导航到该供应商的标准 业务合作伙伴 应用程序 如果这
  • 代码优先迁移过程:我缺少哪一部分?

    我的步骤 1 使用查询在 SSMS 中创建我的数据库 Execute in SQL Server Management Studio prior to building data model s CREATE DATABASE snaked
  • Accumulo、zookeeper hadoop CENTOS 6 的安装说明、下载和版本

    我希望获得有关 Accumulo zookeeper hadoop 安装说明 下载和 CENTOS 6 版本的指导 Thanks Chris 您可以通过cloudera manager版本5进行安装 我最近使用相同的方式安装了accumul
  • GDB - 如何打破“有些东西被写入cout”?

    我想设置一个断点 每次写入内容时都会触发stdout通过cout流 但我无法找到该断点的可能位置 我怎样才能在 gdb 中做到这一点 这是一种依赖于平台的方式 如果您在 x86 64 上并使用 gcc 进行构建 则写入 std cout 会
  • 多个已排序数组的交集

    From this https stackoverflow com questions 2400157 the intersection of two sorted arrays 我们知道解决两个排序数组的交集的方法 那么如何获取多个已排序
  • Razor 中枚举下拉列表的显示名称

    如何在 Razor 的下拉列表中显示枚举的自定义名称 我当前的代码是 Html DropDownListFor model gt model ExpiryStage new SelectList Enum GetValues typeof
  • 制作 CSS 精灵的工具? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在android项目中添加“jfeinstein10 / SlidingMenu”的确切过程

    我对android完全陌生 我正在尝试实现Sliding Menu having ListView with Swipe Gesture 通过一些搜索我发现https github com jfeinstein10 SlidingMenu
  • 图像增强使性能变得更差[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在研究一个图像分割项目 并一直在尝试采用图像增强技术来增加训练集的大小 起初 我只是尝试使用水平翻转将图像尺寸放大一倍 但我发现性
  • 在php中的共享主机上创建并导入mysql数据库

    我正在尝试编写 php 脚本 连接到 mysql 创建数据库 创建用户和密码 将用户添加到数据库 将准备好的sql文件导入数据库 问题是它将位于共享主机上 我正在努力使其通用并与不同的主机一起使用 我猜数据库和 db 用户将在共享主机上以我