十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
php面向对象文件名DB.class.php
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计制作、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的广西网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
?php
header("content-type:text/html;charset=utf-8");
class DB{
public $db_host;//localhost
public $db_user;//用户名
public $db_pwd;//密码
public $db_name;//数据库名
public $links;//链接名称
//构造方法的参数和属性名字一致,但是含义不同
function __construct($db_host,$db_user,$db_pwd,$db_name){
$this - db_host = db_host;
$this - db_user = db_user;
$this - db_pwd = db_pwd;
$this - db_name = db_name;
//链接数据库代码
$this - links = @mysql_connect($db_host,$db_user,$db_pwd)or die("数据库链接失败");
//echo $this - links;打印是资源
mysql_query("set names utf8");
mysql_select_db($db_name,$this-links);
}
function query($sql){//执行各种sql,inert update delete执行,如果执行select返回结果集
return mysql_query($sql);
}
function numRows($sql){//返回select的记录数
$result = $this - query($sql);
$count = mysql_num_rows($result);
return $count;
}
function getOne($sql){//得到一条记录的一维数组
$result = $this - query($sql);
$arr = mysql_fetch_assoc($result);
return $arr;
}
function getAll($sql){//得到多条记录的二维数组
$result = $this - query($sql);
$rows = array();
while($rs = mysql_fetch_assoc($result)){
$rows[] = $rs;
}
return $rows;
}
function __destruct(){
$this - db_host = db_host;
$this - db_user = db_user;
$this - db_pwd = db_pwd;
$this - db_name = db_name;
}
}
$db = new DB("localhost","root","","car");
//$sql = "insert into category(categoryName)values('常熟seo')";
//$db - query($sql);
//返回select的记录数
//$sql = "select * from category";
//$count = $db - numRows($sql);
//echo $count;
//得到一条记录的一维数组
//$sql = "select * from category where categoryId=1";
//$arr = $db - getOne($sql);
//print_r($arr);
//得到多条记录的二维数组
$sql = "select * from category";
$rs = $db - getAll($sql);
print_r($rs);
?
创建一个数据库大类
头文件包含 mysql.h ,调用里面的 mysql 操作函数即可。
网上有很多这类文章。
mysql 的官方文档里也有。
最起码包含mysql.h
实例代码:
#include stdlib.h
#include stdio.h
#include "mysql.h"
int main(int argc, char *argv[]) {
MYSQL *conn_ptr;
conn_ptr = mysql_init(NULL);
if (!conn_ptr) {
fprintf(stderr, "mysql_init failed\n");
return EXIT_FAILURE;
}
conn_ptr = mysql_real_connect(conn_ptr, "localhost", "rick", "secret",
"foo", 0, NULL, 0);//连接数据库
if (conn_ptr) {
printf("Connection success\n");
} else {
printf("Connection failed\n");
}
mysql_close(conn_ptr);
return EXIT_SUCCESS;
}
编译:(假定上面文件取名 con.c,在当前目录下)
gcc -I/usr/include/mysql con.c -L/usr/lib/mysql -lmysqlclient -o con
2、如不是安装在默认目录,则编译器可能无法找到正确的文件路径,则可在编译器中设置mysql的include、lib路径(在mysql的安装目录下的include目录);
3、记得加入winsock.h和mysql.h,winsock.h最好在mysql.h前面,否则VC可能报错;
4、记得在设置里加入libmysql.lib wsock32.lib,然后还记得设置include 和lib文件夹,就可以了;
通过MySQL自定义的API函数进行连接
1、使用API的方式连接,需要加载mysql的头文件和lib文件。
在VS2010的附加包含目录中添加\MySQL\MySQL Server 5.1\include。在安装MySql的目录下找。 把libmysql.dll和libmysql.lib文件拷贝到所建的工程目录下。然后在头文件里包含以下内容:
//mysql所需的头文件和库文件
#include "winsock.h"
#include "mysql.h"
#pragma comment(lib,"libmySQL.lib")
2、进行编码
(1)连接mysql数据库
头文件里定义数据源指针 MYSQL m_sqlCon;
//连接MySql数据库
try
{
mysql_init(m_sqlCon);
// localhost:服务器 root为账号密码 test为数据库名 3306为端口
if(!mysql_real_connect(m_sqlCon, "localhost","root","root","test",3306,NULL,0))
{
AfxMessageBox(_T("数据库连接失败!"));
return FALSE;
}
return TRUE;
}
catch (...)
{
return FALSE;
}
(2)关闭数据库
mysql_close(m_sqlCon);
(3)创建表
char* pQuery = "create table if not exists DS_Building( ID VARCHAR(10),Name VARCHAR(255),Descs VARCHAR(255),PRIMARY KEY (ID))"
if(mysql_real_query(m_sqlCon,pQuery,(UINT)strlen(pQuery))!=0)
{
const char* pCh = mysql_error(m_sqlCon);
return FALSE;
}
附MySQL的API接口:
mysql_affected_rows() 返回被最新的UPDATE, DELETE或INSERT查询影响的行数。
mysql_close() 关闭一个服务器连接。
mysql_connect() 连接一个MySQL服务器。该函数不推荐;使用mysql_real_connect()代替。
mysql_change_user() 改变在一个打开的连接上的用户和数据库。
mysql_create_db() 创建一个数据库。该函数不推荐;而使用SQL命令CREATE DATABASE。
mysql_data_seek() 在一个查询结果集合中搜寻一任意行。
mysql_debug() 用给定字符串做一个DBUG_PUSH。
mysql_drop_db() 抛弃一个数据库。该函数不推荐;而使用SQL命令DROP DATABASE。
mysql_dump_debug_info() 让服务器将调试信息写入日志文件。
mysql_eof() 确定是否已经读到一个结果集合的最后一行。这功能被反对; mysql_errno()或mysql_error()可以相反被使用。
mysql_errno() 返回最近被调用的MySQL函数的出错编号。
mysql_error() 返回最近被调用的MySQL函数的出错消息。
mysql_escape_string() 用在SQL语句中的字符串的转义特殊字符。
mysql_fetch_field() 返回下一个表字段的类型。
mysql_fetch_field_direct () 返回一个表字段的类型,给出一个字段编号。
mysql_fetch_fields() 返回一个所有字段结构的数组。
mysql_fetch_lengths() 返回当前行中所有列的长度。
mysql_fetch_row() 从结果集合中取得下一行。
mysql_field_seek() 把列光标放在一个指定的列上。
mysql_field_count() 返回最近查询的结果列的数量。
mysql_field_tell() 返回用于最后一个mysql_fetch_field()的字段光标的位置。
mysql_free_result() 释放一个结果集合使用的内存。
mysql_get_client_info() 返回客户版本信息。
mysql_get_host_info() 返回一个描述连接的字符串。
mysql_get_proto_info() 返回连接使用的协议版本。
mysql_get_server_info() 返回服务器版本号。
mysql_info() 返回关于最近执行得查询的信息。
mysql_init() 获得或初始化一个MYSQL结构。
mysql_insert_id() 返回有前一个查询为一个AUTO_INCREMENT列生成的ID。
mysql_kill() 杀死一个给定的线程。
mysql_list_dbs() 返回匹配一个简单的正则表达式的数据库名。
mysql_list_fields() 返回匹配一个简单的正则表达式的列名。
mysql_list_processes() 返回当前服务器线程的一张表。
mysql_list_tables() 返回匹配一个简单的正则表达式的表名。
mysql_num_fields() 返回一个结果集合重的列的数量。
mysql_num_rows() 返回一个结果集合中的行的数量。
mysql_options() 设置对mysql_connect()的连接选项。
mysql_ping() 检查对服务器的连接是否正在工作,必要时重新连接。
mysql_query() 执行指定为一个空结尾的字符串的SQL查询。
mysql_real_connect() 连接一个MySQL服务器。
mysql_real_query() 执行指定为带计数的字符串的SQL查询。
mysql_reload() 告诉服务器重装授权表。
mysql_row_seek() 搜索在结果集合中的行,使用从mysql_row_tell()返回的值。
mysql_row_tell() 返回行光标位置。
mysql_select_db() 连接一个数据库。
mysql_shutdown() 关掉数据库服务器。
mysql_stat() 返回作为字符串的服务器状态。
mysql_store_result() 检索一个完整的结果集合给客户。
mysql_thread_id() 返回当前线程的ID。
mysql_use_result() 初始化一个一行一行地结果集合的检索。
建立一个空的控制台程序,建立一个cpp文件,在其中加入如下代码。代码部分:
#includewinsock2.h
//定义socket
#includeiostream
#include"mysql.h"
//#pragma comment( lib, "libmysql.lib");
//此句话和在附加依赖项中增加libmysql.lib 的功能一样
usingnamespace std;
int main(char **args)
{
MYSQL mysql;
mysql_init(mysql);
if (mysql_real_connect(mysql,"localhost","root","","test",3306,0,0))
{
cout"ok"endl;
return 0;
}
else
{
int i = mysql_errno(mysql);
constchar * s = mysql_error(mysql);
cout sendl;
}
}
相关设置:
1、附加包含头文件的目录,include就是mysql-5.0.27-win32\Include文件夹。
2、附加库目录,MySql lib中的文件就是mysql-5.0.27-win32\lib\opt中的文件
3、附加依赖项,名称为libmysql.lib
4、将libmysql.dll拷贝到debug文件夹中,libmysql.dll在lib文件夹中有