一个php数据库插入记录的性能对比产生的问题。

robake 2015-08-28 01:38:12
我是搞C#的,最近因为一些原因吧,也在学点php。
今天测试了一段代码,很简单,就是往数据库里写入一行记录。抓一下这段程序的执行时间,产生了一个疑问:php怎么这么慢。

我的php环境是phpstudy集成环境,php版本是5.3.29,服务器用的nginx。
mysql数据库有张表users:
id(自增列),name(varchar),time(time)
我php的测试代码:

<script>
function r(s)
{
window.location=s;
}
</script>
<?php
$starttime = explode(' ',microtime());

$p = Request("p");
if($p=="")
{
InsertRecord(getRand());
echo "插入第1条记录。";
echo "<script>setTimeout(\"r('?p=2');\",10)</script>";
}
else
{
$q = (int)$p;
InsertRecord(getRand());
echo "插入第".$q."条记录。";
echo "<script>setTimeout(\"r('?p=".($q+1)."');\",10)</script>";
}


$endtime = explode(' ',microtime());
$thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);
$thistime = round($thistime,3);
echo "<br>本网页执行耗时:".$thistime." 秒。".time();

function Request($s)
{
if($_REQUEST)
{
$p = $_REQUEST[$s];
if($p == "")
{
return "";
}
else
{
return $p;
}
}
else
return "";
}

function getRand(){
$a = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_()&^}{+=|?!@#$%";
$start = rand(0,strlen($a)-1);
$len = rand(1,strlen($a));
$str = substr($a,$start,$len);
echo "生成的用户名:" . $str ."<br>";
return $str;
}

function InsertRecord($s)
{
$link = mysql_connect('localhost', 'root', 'root');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
//echo 'Connected successfully';

$sql = "insert into users (name,time) values ('" . $s . "','" .date('y-m-d h:i:s',time())."')";
// 执行sql查询
mysql_select_db("test", $link);//设定要操作的数据库
//$result=mysql_query($sql, $link);
if (!mysql_query($sql,$link))
{
die('Error: ' . mysql_error());
}
mysql_close($link);
//echo "1 record added";
}
?>


我发现执行时间居然有1秒多点,发现很慢。

而相同的,我用C#整了段代码:

protected void Page_Load(object sender, EventArgs e)
{
DateTime start = DateTime.Now;
Run();
DateTime end = DateTime.Now;
TimeSpan span = end - start;
double seconds = span.TotalSeconds;
Response.Write("程序耗时:" + seconds);
}

private static void Run()
{
string name = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRS";
Console.WriteLine("插入:" + name);
MySqlConnection conn = new MySqlConnection();
conn.ConnectionString = "server=localhost;User Id=root;password=root;Database=test";
conn.Open();
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = "insert into users (name,time) values ('" + name + "','" + DateTime.Now.ToString() + "')";
cmd.ExecuteNonQuery();
cmd.Dispose();
conn.Close();
conn.Dispose();
}

结果是速度远超php了。
测试结果:



对比差别能这么大吗?
...全文
422 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你的那段PHP 代码明显有问题,首先比较罗嗦,很初级
__小帅 2015-09-03
  • 打赏
  • 举报
回复
没有可比性,看看你的代码就知道你是刚入门php。完全不是一个套路。 先用settimeout 延时 然后再测试整个http请求过程时间。
黄袍披身 2015-09-01
  • 打赏
  • 举报
回复
我让你改代码 希望你改成 单纯的插入数据这样来测试.其次一个呢 我们暂时没你那样的环境做测试 所以也得不出其他结果 兴许你换一台电脑就跑出不一样的结果了,彼此的数据库驱动应该都不是一样的吧 C#是不是有自己的数据库驱动呢. 最后呢 要用mysqli 来测试.....mysql 已经淘汰了.
robake 2015-09-01
  • 打赏
  • 举报
回复
引用 20 楼 qq_17461621 的回复:
开发php应用程序,不要在windows的框架上折腾,操作系统请换成linux,lamp架构!!! 这样的php性能是最好的。
我还没入门,只是在学的阶段,windows环境下的环境是最容易布署的。
robake 2015-09-01
  • 打赏
  • 举报
回复
引用 22 楼 PhpNewnew 的回复:
我让你改代码 希望你改成 单纯的插入数据这样来测试.其次一个呢 我们暂时没你那样的环境做测试 所以也得不出其他结果 兴许你换一台电脑就跑出不一样的结果了,彼此的数据库驱动应该都不是一样的吧 C#是不是有自己的数据库驱动呢. 最后呢 要用mysqli 来测试.....mysql 已经淘汰了.
试了把mysqli,结果是一样的,没有变化。 算了,结贴,也许php不是想象中的那么强大。
robake 2015-08-31
  • 打赏
  • 举报
回复
引用 11 楼 misakaqunianxiatian 的回复:
难道说PHP已经衰落了么。。。。。。
别在那开玩笑,我相信现在这么大的互联网企业用php开发高并发应用,说明php的性能其实是很可观的。 我是想搞明白为什么我测试的却是这样,是代码问题还是环境问题。
水静流深308 2015-08-31
  • 打赏
  • 举报
回复
开发php应用程序,不要在windows的框架上折腾,操作系统请换成linux,lamp架构!!! 这样的php性能是最好的。
misaka去年夏天 2015-08-31
  • 打赏
  • 举报
回复
难道说PHP已经衰落了么。。。。。。
robake 2015-08-31
  • 打赏
  • 举报
回复
引用 9 楼 qq_17461621 的回复:
慢点很正常,逻辑清晰就好。解释和编译如何对比!!
那是否是说两者的性能差异是因为一个编译了一个是脚本解释执行的? 但就算是这样,差异不会这么大吧。
水静流深308 2015-08-31
  • 打赏
  • 举报
回复
慢点很正常,逻辑清晰就好。解释和编译如何对比!!
robake 2015-08-31
  • 打赏
  • 举报
回复
结果一样,还是要1秒
黄袍披身 2015-08-31
  • 打赏
  • 举报
回复
引用 6 楼 robake 的回复:
注释掉数据库执行后的结果:执行时间都是一样,几乎为0.






是否能从这说明就是php的性能问题?是因为win 7的原因吗?


把代码改一下

php -q 测试文件.php

直接跑看结果
robake 2015-08-31
  • 打赏
  • 举报
回复
注释掉数据库执行后的结果:执行时间都是一样,几乎为0. 是否能从这说明就是php的性能问题?是因为win 7的原因吗?
robake 2015-08-31
  • 打赏
  • 举报
回复
引用 17 楼 zhoukang0916 的回复:
这个不符合逻辑吧,就算要走dns解析,总不会php走,c#就不走了吧,我那里都用的localhost,并没有哪里使用的ip。 我并没有不允许你把PHP和.NET都使用127.0.0.1去访问。 你发问题讨论的内容是:在同等的机器下,使用 "合理" 的方法得到 "合理" 的结果。 或许如同xuzuning所说,是我测试方法不正确,但粗略来看,这个似乎也并不大的不妥吧,我所知道的是现在很多大型网站都是使用nginx作为php的容器在使用,而我测试C#的只是使用的VS2010自带的测试服务器,这两者之间本身是存在差异的吧。 你不觉得是跑偏了?
恐怕是你这里理解错了,我的问题是同一台机器,不同的服务器环境,性能差别为什么这么大?大的原因是代码问题还是环境问题,还是测试方法的问题,我说到的那些使用nginx作为容器,这怎么就是跑偏了?
robake 2015-08-31
  • 打赏
  • 举报
回复
PandaIT 2015-08-31
  • 打赏
  • 举报
回复
这个不符合逻辑吧,就算要走dns解析,总不会php走,c#就不走了吧,我那里都用的localhost,并没有哪里使用的ip。 我并没有不允许你把PHP和.NET都使用127.0.0.1去访问。 你发问题讨论的内容是:在同等的机器下,使用 "合理" 的方法得到 "合理" 的结果。 或许如同xuzuning所说,是我测试方法不正确,但粗略来看,这个似乎也并不大的不妥吧,我所知道的是现在很多大型网站都是使用nginx作为php的容器在使用,而我测试C#的只是使用的VS2010自带的测试服务器,这两者之间本身是存在差异的吧。 你不觉得是跑偏了?
robake 2015-08-31
  • 打赏
  • 举报
回复
引用 14 楼 zhoukang0916 的回复:
很明显嘛 把localhost换成127.0.0.1,因为MySQL会去走一个DNS解析的过程,在服务器上也应该使用ip来进行数据库连接,或者在(windows)my.ini里面修改一下配置也是可以的。 就算(当前)测试整个http的周期PHP都还是强过.net的.
这个不符合逻辑吧,就算要走dns解析,总不会php走,c#就不走了吧,我那里都用的localhost,并没有哪里使用的ip。 整http周期,php都强过.net,这个似乎跟我这个测试有冲突吧。 或许如同xuzuning所说,是我测试方法不正确,但粗略来看,这个似乎也并不大的不妥吧,我所知道的是现在很多大型网站都是使用nginx作为php的容器在使用,而我测试C#的只是使用的VS2010自带的测试服务器,这两者之间本身是存在差异的吧。
robake 2015-08-31
  • 打赏
  • 举报
回复
C#是直接使用VS2010自带的asp.net Development server调试的,没有附加的内容。 前边尝试过去掉数据库执行的代码,同样再运行,耗时和C#里一样,都是0(或是约等于0) 而加上数据库执行代码后,一个就是1秒多,一个就是0.001秒,那这样应该是可以判断问题出在访问mysql的环节吧。 php访问mysql数据库是自带的驱动吗?C#是直接从官网下载的连接库。
PandaIT 2015-08-31
  • 打赏
  • 举报
回复
很明显嘛 把localhost换成127.0.0.1,因为MySQL会去走一个DNS解析的过程,在服务器上也应该使用ip来进行数据库连接,或者在(windows)my.ini里面修改一下配置也是可以的。 就算(当前)测试整个http的周期PHP都还是强过.net的.
xuzuning 2015-08-31
  • 打赏
  • 举报
回复
无论如何,插入一条记录是不可能要花费 1 秒的 测试时,对照组要有对等的条件 Mysql.net 只在第一次连接数据库时存在真实的物理连接操作,这与 php mysql 扩展的长连接是等效的 但你测试时,php 用的是短连接 我前面已经说了,你测试的是整个 http 会话的时间。下结论前应刨去非 MySQL 的因素 nginx + php 是 CGI 工作方式 你也没说明 C# 是什么方式工作的 如果你把运行环境造成的延时都归罪于 MySQL 的话,显然是不公正的
加载更多回复(5)
MySQL中文参考手册.chm449kb0 译者序 1 MySQL的一般的信息1.1 什么是MySQL? 1.2 关于本手册1.2.1 本手册中使用的约定 1.3 MySQL的历史 1.4 MySQL的主要特征 1.5 MySQL稳定性? 1.6 顺应2000年 1.7 SQL一般信息和教程 1.8 有用的MySQL相关链接 2 MySQL 邮件列表及如何提问或报告错误2.1 MySQL邮件列表 2.2 提问或报告错误 2.3 怎样报告错误或问题 2.4 在邮件列表上回答问题的指南 3 MySQL的许可证和技术支持3.1 MySQL的许可证政策 3.2 MySQL 使用的版权3.2.1 可能的未来版权改变 3.3 MySQL商业性分发 3.4 许可证实例3.4.1 销售使用 MySQL的产品 3.4.2 销售MySQL相关的服务 3.4.3 ISP MySQL服务 3.4.4 运营一个使用MySQL的Web服务器 3.5 MySQL的许可证和技术支持费用3.5.1 付款信息 3.5.2 联系信息 3.6 商业性支持的类型3.6.1 基本的电子邮件支持 3.6.2 扩展的电子邮件支持 3.6.3 登录支持 3.6.4 扩展的登录支持 4 安装 MySQL 4.1 怎样获得MySQL 4.2 MySQL支持的操作系统 4.3 使用MySQL哪个版本 4.4 怎样和何时发布更新版本 4.5 安装布局 4.6 安装MySQL二进制代码分发4.6.1 Linux RPM注意事项 4.6.2 构造客户程序 4.6.3 系统特定的问题4.6.3.1 Linux 注意事项 4.6.3.2 HP-UX 注意事项 4.7 安装 MySQL源代码分发4.7.1 快速安装概述 4.7.2 运用补丁 4.7.3 典型的configure选项 4.8 编译问题? 4.9 MIT-pthreads 注意事项 4.10 Perl 安装说明4.10.1 在Unix操作系统上安装 Perl 4.10.2 在 Win32上安装 ActiveState Perl 4.10.3 在 Win32 上安装 MySQL Perl 分发 4.10.4 使用 Perl DBI/DBD接口遇到的问题 4.11 系统特定的问题4.11.1 Solaris注意事项 4.11.2 Solaris 2.7 注意事项 4.11.3 Solaris x86 注意事项 4.11.4 SunOS 4 注意事项 4.11.5 Linux (所有的Linux版本)注意事项4.11.5.1 Linux-x86 注意事项 4.11.5.2 RedHat 5.0 注意事项 4.11.5.3 RedHat 5.1 注意事项 4.11.5.4 Linux-SPARC 注意事项 4.11.5.5 Linux-Alpha 注意事项 4.11.5.6 MkLinux 注意事项 4.11.5.7 Qube2 Linux 注意事项 4.11.6 Alpha-DEC-Unix 注意事项 4.11.7 Alpha-DEC-OSF1 注意事项 4.11.8 SGI-Irix 注意事项 4.11.9 FreeBSD 注意事项 4.11.10 NetBSD 注意事项 4.11.11 BSD/OS 注意事项4.11.11.1 BSD/OS 2.x 注意事项 4.11.11.2 BSD/OS 3.x 注意事项 4.11.11.3 BSD/OS 4.x 注意事项 4.11.12 SCO 注意事项 4.11.13 SCO Unixware 7.0 注意事项 4.11.14 IBM-AIX 注意事项 4.11.15 HP-UX 注意事项 4.12 Win32 注意事项4.12.1 在 Win32 上安装 MySQL 4.12.2 在 Win95 /Win98上启动 MySQL 4.12.3 在 NT 上启动 MySQL 4.12.4 在 Win32 上运行 MySQL 4.12.5 用 SSH 从 Win32 连接一个远程MySQL 4.12.6 MySQL-Win32与Unix MySQL 比较 4.13 OS/2 注意事项 4.14 TcX 二进制代码 4.15 安装后期(post-installation)的设置与测试4.15.1 运行mysql_install_db 的问题 4.15.2 启动 MySQL 服务器的问题 4.15.3 自动启动和停止 MySQL 4.15.4 选项文件 4.16 升级和降级(downgrading)时有什么特别要做的事情吗?4.16.1 从一个 3.22 版本升级到 3.23 4.16.2 从一个 3.21 版本升级到 3.22 4.16.3 从一个 3.20 版本升级到 3.21 4.16.4 升级到其他的体系结构 5 MySQL 与标准的兼容性?5.1 MySQL对ANSI SQL92 的扩充 5.2 以ANSI模式运行 MySQL 5.3 MySQL相比ANSI SQL92的差别 5.4 MySQL 缺乏的功能5.4.1 子选择(Sub-selects) 5.4.2 SELECT INTO TABLE 5.4.3 事务(Transactions) 5.4.4 存储过程和触发器 5.4.5 外键(Foreign Keys)5.4.5.1 不使用外键的理由 5.4.6 视图(Views) 5.4.7 '--'作为一个 注解的开始 5.5 MySQL 遵循什么标准? 5.6 怎样处理没有提交/回卷(COMMIT / ROLLBACK) 6 MySQL 存取权限系统6.1 权限系统做什么 6.2 MySQL用户名和口令 6.3 与MySQL服务器连接 6.4 使你的口令安全 6.5 MySQL 提供的权限 6.6 权限系统工作原理 6.7 存取控制,阶段1:连接证实 6.8 存取控制,阶段2:请求证实 6.9 权限更改何时生效 6.10 建立初始的 MySQL权限 6.11 向MySQL增加新用户权限 6.12 怎样设置口令 6.13 存取拒绝(Access Denied)错误的原因 6.14 怎样使MySQL安全以对抗解密高手(cracker) 7 MySQL 语言参考7.1 文字:怎样写字符串和数字7.1.1 字符串 7.1.2 数字 7.1.3 十六进制值 7.1.4 NULL值 7.1.5 数据库,表,索引,列和别名的命名7.1.5.1 名字的大小写敏感性 7.2 用户变量 7.3 列类型7.3.1 列类型的存储要求 7.3.5 数字类型 7.3.6 日期和时间类型7.3.6.1 问题和日期类型 7.3.6.2 DATETIME,DATE和TIMESTAMP类型 7.3.6.3 TIME类型 7.3.6.4 YEAR类型 7.3.7 字符串类型7.3.7.1 CHAR和VARCHAR类型 7.3.7.2 BLOB和TEXT类型 7.3.7.3 ENUM类型 7.3.7.4 SET类型 7.3.8 为列选择正确的类型 7.3.9 列索引 7.3.10 多列索引 7.3.11 使用来自其他数据库引擎的列类型 7.4 用在SELECT和WHERE子句的函数7.4.1 分组函数 7.4.2 常用的算术运算 7.4.3 位函数 7.4.4 逻辑运算 7.4.5 比较运算符 7.4.6 字符串比较函数 7.4.7 类型转换运算符 7.4.8 控制流函数 7.4.9 数学函数 7.4.10 字符串函数 7.4.11 日期和时间函数 7.4.12 其他函数 7.4.13 与GROUP BY子句一起使用的函数 7.5 CREATE DATABASE (创建数据库)句法 7.6 DROP DATABASE (抛弃数据库)句法 7.7 CREATE TABLE (创建表)句法7.7.1 隐含(silent)的列指定变化 7.8 ALTER TABLE (改变表)句法 7.9 OPTIMIZE TABLE (优化表) 句法 7.10 DROP TABLE (抛弃表)句法 7.11 DELETE (删除)句法 7.12 SELECT (精选)句法 7.13 JOIN (联接)句法 7.14 INSERT (插入)句法 7.15 REPLACE (替换)句法 7.16 LOAD DATA INFILE (装载数据到文件)句法 7.17 UPDATE (更新)句法 7.18 USE (使用)句法 7.19 FLUSH (清除缓存)句法 7.20 KILL (杀灭)句法 7.21 SHOW (显示)句法(得到关于表,列等的信息) 7.22 EXPLAIN (解释)句法(得到关于SELECT的信息) 7.23 DESCRIBE (描述)句法(得到列的信息) 7.24 LOCK TABLES/UNLOCK TABLES (锁定表/解锁表)句法 7.25 SET OPTION (设置选项)句法 7.26 GRANT (授权)和REVOKE (撤回)句法 7.27 CREATE INDEX (创建索引)句法 7.28 DROP INDEX (抛弃索引)句法 7.29 注释句法 7.30 CREATE FUNCTION/DROP FUNCTION (创建函数/抛弃函数)句法 7.31 MySQL对保留字很挑剔吗? 8 MySQL 教程8.1 联接和断开服务器 8.2 输入查询 8.3 常用查询的例子8.3.1 列的最大值 8.3.2 拥有某个列的最大值的行 8.3.3 列的最大值:按组:只有值 8.3.4 拥有某个字段的组间最大值的行 8.3.5 使用外键 8.4 创建并使用一个数据库8.4.1 创建并选用一个数据库 8.4.2 创建一个数据库表 8.4.3 将数据装入数据库表 8.4.4 从一个数据库表检索信息8.4.4.1 选择所有数据 8.4.4.2 选择特定行 8.4.4.3 选择特定列 8.4.4.4 排序行 8.4.4.5 日期计算 8.4.4.6 NULL值操作 8.4.4.7 模式匹配 8.4.4.8 行计数 8.4.5 使用多个数据库表 8.5 获得数据库和表的信息 8.6 以批处理模式使用mysql 8.7 从"双胞项目"中查询8.7.1 找出所有非独处的双胞胎 8.7.2 显示关于双胞胎近况的表 9 MySQL 服务器功能9.1 MySQL 支持哪些语言?9.1.1 用于数据和排序的字符集 9.1.2 增加一个新的字符集 9.1.3 多字节字符支持 9.2 更新日志 9.3 MySQL数据库表可以有多大? 9.4 MySQL数据库表类型 10 从 MySQL 得到最大的性能10.1 优化概述 10.2 系统/编译时和启动参数的调节10.2.1 编译和链接如何影响 MySQL 的速度 10.2.2 磁盘问题10.2.2.1 为数据库和表格使用符号链接 10.2.3 调节服务器参数 10.2.4 MySQL 怎样打开和关闭数据库表 10.2.5 在同一个数据库中创建大量数据库表的缺点 10.2.6 为什么有这么多打开的表? 10.2.7 MySQL 怎样使用内存 10.2.8 MySQL 怎样锁定数据库表 10.2.9 数据库表级锁定的问题 10.3 使你的数据尽可能小 10.4 MySQL 索引的使用 10.5 存取或更新数据的查询速度10.5.1 估计查询性能 10.5.2 SELECT 查询的速度 10.5.3 MySQL 怎样优化WHERE子句 10.5.4 MySQL 怎样优化LEFT JOIN 10.5.5 MySQL 怎样优化LIMIT 10.5.6 INSERT查询的速度 10.5.7 UPDATE查询的速度 10.5.8 DELETE查询的速度 10.6 选择一种表类型10.6.1 静态(定长)表的特点 10.6.2 动态表的特点 10.6.3 压缩表的特点 10.6.4 内存(In-memory table)表的特点 10.7 其他优化技巧 10.8 使用你自己的基准测试 10.9 设计选择 10.10 MySQL 设计局限/折衷 10.11 可移植性 10.12 我们已将MySQL用在何处? 11 MySQL 基准套件 12 MySQL 实用程序12.1 各种 MySQL 程序概述 12.2 管理一个 MySQL 服务器 12.3 从 MySQL 数据库和表中倒出(dump)结构和数据 12.4 从文本文件导入数据 12.5 MySQL 压缩只读表生成器 13 维护 MySQL 安装13.1 使用myisamchk进行表维护和崩溃恢复13.1.1 myisamchk的调用语法 13.1.2 myisamchk的内存使用 13.2 13.2 建立一个数据库表维护规范 13.3 获得关于一个表的信息 13.4 使用myisamchk进行崩溃恢复13.4.1 怎样检查表的出错 13.4.2 怎样修复表 13.4.3 表优化 13.5 日志文件维护 14 为MySQL增加新函数14.1 增加一个新的用户定义函数14.1.1 UDF调用顺序 14.1.2 参数处理 14.1.3 返回值和出错处理 14.1.4 编译并安装用户定义函数 14.2 增加一个新的原生(native)函数 15 为MySQL增加新过程15.1 analyse过程 15.2 编写一个过程 16 MySQL对 ODBC 支持16.1 MyODBC 支持的操作系统 16.2 怎样报告 MyODBC的问题 16.3 已知可用 MyODBC一起工作的程序 16.4 怎样填写 ODBC 管理程序的各种域 16.5 怎样在ODBC中获得一个AUTO_INCREMENT列的值 16.6 报告 MyODBC 的问题 17 与一些常用程序一起使用MySQL17.1 与 Apache一起使用 MySQL 18 问题和常见的错误18.1 如果 MySQL总是崩溃怎么办 18.2 使用 MySQL 时一些常见错误18.2.1 MySQL server has gone away错误 18.2.2 Can't connect to [local] MySQL server错误 18.2.3 Host '...' is blocked错误 18.2.4 Out of memory错误 18.2.5 Packet too large错误 18.2.6 The table is full错误 18.2.7 Commands out of sync in client错误 18.2.8 Ignoring user错误 18.2.9 Table 'xxx' doesn't exist错误 18.3 MySQL 怎样处理一个溢出的磁盘 18.4 怎样从一个文本文件运行SQL命令 18.5 MySQL 在哪儿存储临时文件 18.6 怎样保护"/tmp/mysql.sock"不被删除 18.7 Access denied 出错 18.8 怎样作为一个一般用户运行 MySQL 18.9 怎样重新设置一个忘记的口令 18.10 文件许可权限问题 18.11 文件没找到 18.12 使用DATE列的问题 18.13 时区问题 18.14 在搜索中的大小写敏感性 18.15 NULL值问题 18.16 alias问题 18.17 从相关的表中删除行 18.18 解决没有匹配行的问题 18.19 ALTER TABLE问题 18.20 怎样改变一个表中列的次序 19 解决MySQL 一些常见的问题19.1 数据库复制 19.2 数据库备份 19.3 在同一台机器上运行多个 MySQL 服务器 20 MySQL 客户工具和 API20.1 MySQL C API 20.2 C API数据类型 20.3 C API函数概述 20.4 C API函数描述20.4.1 mysql_affected_rows () 20.4.2 mysql_close () 20.4.3 mysql_connect () 20.4.4 mysql_change_user () 20.4.5 mysql_create_db () 20.4.6 mysql_data_seek () 20.4.7 mysql_debug () 20.4.8 mysql_drop_db () 20.4.9 mysql_dump_debug_info () 20.4.10 mysql_eof () 20.4.11 mysql_errno () 20.4.12 mysql_error () 20.4.13 mysql_escape_string () 20.4.14 mysql_fetch_field () 20.4.15 mysql_fetch_fields () 20.4.16 mysql_fetch_field_direct () 20.4.17 mysql_fetch_lengths () 20.4.18 mysql_fetch_row () 20.4.19 mysql_field_count () 20.4.20 mysql_field_seek () 20.4.21 mysql_field_tell () 20.4.22 mysql_free_result () 20.4.23 mysql_get_client_info () 20.4.24 mysql_get_host_info () 20.4.25 mysql_get_proto_info () 20.4.26 mysql_get_server_info () 20.4.27 mysql_info () 20.4.28 mysql_init () 20.4.29 mysql_insert_id () 20.4.30 mysql_kill () 20.4.31 mysql_list_dbs () 20.4.32 mysql_list_fields () 20.4.33 mysql_list_processes () 20.4.34 mysql_list_tables () 20.4.35 mysql_num_fields () 20.4.36 mysql_num_rows () 20.4.37 mysql_options () 20.4.38 mysql_ping () 20.4.39 mysql_query () 20.4.40 mysql_real_connect () 20.4.41 mysql_real_query () 20.4.42 mysql_reload () 20.4.43 mysql_row_seek () 20.4.44 mysql_row_tell () 20.4.45 mysql_select_db () 20.4.46 mysql_shutdown () 20.4.47 mysql_stat () 20.4.48 mysql_store_result () 20.4.49 mysql_thread_id () 20.4.50 mysql_use_result () 20.4.51 为什么在mysql_query()返回成功后mysql_store_result()有时返回NULL? 20.4.52 我能从查询得到什么结果? 20.4.53 我怎样才能获得最后插入的行的唯一ID? 20.4.54 链接 C API的问题 20.4.55 怎样制作一个线程安全(thread-safe)的客户 20.5 MySQL Perl API20.5.1 DBI与DBD::mysql 20.5.2 DBI接口 20.5.3 更多的DBI/DBD信息 20.6 MySQL Eiffel 包装 20.7 MySQL Java 连接(JDBC) 20.8 MySQL PHP API 20.9 MySQL C++ API 20.10 MySQL Python API 20.11 MySQL TCL API 21 怎样对比MySQL与其他数据库21.1 怎样对比MySQL和mSQL 21.1.1 怎样将mSQL工具转换到MySQL 21.1.2 mSQL和MySQL的 客户机/服务器通讯协议有何不同 21.1.3 mSQL 2.0 SQL句法与MySQL有何不同 21.2 怎样对比MySQL与PostgreSQL A 一些 MySQL 用户 B 贡献的程序 C MySQL贡献者 D MySQL 变迁的历史记录 E MySQL中已知的错误和设计缺限 F 我们想要在未来加入到MySQL 的计划表( TODO ) G 对移植到其他系统的说明 H MySQL 正则表达式句法的描述 I 什么是 Unireg? J 针对非微软操作系统的 MySQL 服务器许可证 K 针对微软操作系统的 MySQL 许可证 SQL命令,类型和函数索引 概念索引

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧