php连接mysql数据库问题分析

发布时间:2019-07-26编辑:脚本学堂
有关php连接mysql数据库的一些问题,php自带mysql库进行mysql操作,相关配置参数,以及mysql_connect与mysqli_connect的区别等。

php连接mysql/ target=_blank class=infotextkey>mysql数据库问题

php mysql中文乱码,简单处理方法:
在查询之前插入:mysql_query("set names gbk"); 其中gbk 也可以改成其他中文字符集。
(似乎比较难以在同一的类中调用,大概是和具体的查询前有时候涉及数据库的选择有关?)
 
而且,在数据库导出,导入之前也最好插入这条语句,保持字符的一致性(否则,在数据库中也可能出现乱码)。
 

复制代码 代码示例:

<p>04级新生名单</p> 
<table border="1"  width="80%" cellpadding="0"> 
<tr> 
 <td width="10%" align="center">Id</td> 
 <td width="20%" align="center">Name</td> 
 <td width="10%" align="center">Age</td> 
 <td width="10%" align="center">Sex</td> 
 <td width="30%" align="center">Address</td> 
 <td width="20%" align="center">DoWith</td> 
</tr> 
<?php 
//连接数据库 
//打开一个连接,连接到本地mysql数据库 
$conn=mysql_connect("localhost","root","dalyluo");//ip,user,pwd 
//选择操作的资料库 
mysql_select_db("test",$conn);// 资料库名称,连接 
$sql="select * from student"; 

//用mysql_query函数从资料库中查询 
mysql_query("set names gbk");//处理中文乱码问题,gbk可以是其它值 
$result=mysql_query($sql,$conn);// search  sql, connection 
//循环读取记录 
while($row=mysql_fetch_array($result)){ 
?> 
<tr> 
 <td width="10%" align="center"><?php echo $row["stuid"] ?></td> 
 <td width="20%" align="center"><?php echo $row["stuname"] ?></td> 
 <td width="10%" align="center"><?php echo $row["stuage"] ?></td> 
 <td width="10%" align="center"><?=$row["stusex"]?></td> 
 <td width="30%" align="center"><?=$row["stuaddress"]?></td> 
 <td width="20%" align="center"><a href="#" mce_href="#" onClick="<?php doDel($row["stuid"]) ?>">删除</a></td> 
</tr> 
<?php 

//关闭连接 
mysql_close($conn); 
function doDel($sid){ 
 global $conn; 
 mysql_select_db("test",$conn); 
 $del_sql="delect from student  where stuid="+$sid; 
 mysql_query($del_sql,$conn); 

?> 
</table> 

php自带mysql库进行mysql操作

1,配置连接参数:
 

#配置连接参数:Mysql服务器、用户、密码
$my_server = "localhost";
$my_username = "root";
$my_password = "password";
 

 
2,建立数据库连接:
 

复制代码 代码示例:
$connect = mysql_connect($my_server, $my_username, $my_password);
if ($connect == false){
 echo "Error: Connect to the '$my_server' with username '$my_username' failed!n";
 }
else{
 echo "Info: Connect to the '$my_server' with username '$my_username' successfully!n";
 }

运行结果:
>D:...php>php mysql_test.php
>Info: Connect to the 'localhost' with username 'root' successfully!
我使用的是mysql_connect()方法,该方法用于建立一个非持久的数据库连接。其原型和参数、返回类型说明如下:

语法   mysql_connect(server,user,pwd,newlink,clientflag)
参数 描述
server 
可选。规定要连接的服务器。

可以包括端口号,例如 "hostname:port"。

可以包括到本地套接字的路径,例如对于 localhost 的 ":/path/to/socket"。

如果 PHP 指令 mysql.default_host 未定义(默认情况),则默认值是 'localhost:3306'。

user 可选。用户名。默认值是服务器进程所有者的用户名。
pwd 可选。密码。默认值是空密码。
newlink 
可选。

如果用同样的参数第二次调用 mysql_connect(),将不会建立新连接,而将返回已经打开的连接标识。

参数 new_link 改变此行为并使 mysql_connect() 总是打开新的连接,甚至当 mysql_connect() 曾在前面被用同样的参数调用过。

clientflag 
可选。client_flags 参数可以是以下常量的组合:

MYSQL_CLIENT_SSL - 使用 SSL 加密
MYSQL_CLIENT_COMPRESS - 使用压缩协议
MYSQL_CLIENT_IGNORE_SPACE - 允许函数名后的间隔
MYSQL_CLIENT_INTERACTIVE - 允许关闭连接之前的交互超时非活动时间
返回值
如果成功,则返回一个 MySQL 连接标识,失败则返回 FALSE。

注意
使用该方法建立的数据库连接,以下方式可以正常关闭:

1.脚本运行结束;2.调用 mysql_close() 关闭。

可以使用mysql_pconnect()方法建立一个持久的数据库连接。其原型和参数、返回类型说明如下:

语法   mysql_pconnect(server,user,pwd,clientflag)
参数 描述
server 
同mysql_connect()方法

user 同mysql_connect()方法
pwd 同mysql_connect()方法
clientflag 
同mysql_connect()方法

返回值
如果成功,则返回一个 MySQL 持久连接标识符,出错则返回 FALSE。

与mysql_connect()的区别:
1,当建立连接时mysql_pconnect()将先尝试寻找在同主机上使用用同用户名和密码已经建立的(持久)连接;如果找到,则返回此连接标识而不打开新连接。
2,当脚本执行结束后到服务器的连接不会被关闭,将保持打开以备以后使用(mysql_close() 不会关闭由 mysql_pconnect() 建立的连接)。

php连接mysql数据库基础
bool define ( string name, mixed value [, bool case_insensitive] )

define函数作用是定义常量
 

define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PWD', '123456');
define('DB_NAME', 'mtest');

resource mysql_connect ( [string server [, string username [, string password [, bool new_link [, int client_flags]]]]] )
mysql_connect函数作用是打开或重复使用一个到 MySQL 服务器的连接。

$conn = mysql_connect('DB_HOST', 'DB_USER', 'DB_PWD');

resource mysql_query ( string query [, resource link_identifier] )
mysql_query函数作用是向与指定的连接标识符关联的服务器中的当前活动数据库发送一条查询。
mysql_query() 仅对 SELECT,SHOW,EXPLAIN 或 DESCRIBE 语句返回一个资源标识符,如果查询执行不正确则返回 FALSE。对于其它类型的 SQL 语句,mysql_query() 在执行成功时返回 TRUE,出错时返回 FALSE。非 FALSE 的返回值意味着查询是合法的并能够被服务器执行。这并不说明任何有关影响到的或返回的行数。 很有可能一条查询执行成功了但并未影响到或并未返回任何行。
 

$query = 'select * from message';
$result = mysql_query($query);
 

 
array mysql_fetch_array ( resource result [, int result_type] )
mysql_fetch_array函数作用是从结果集中取得一行作为关联数组,或数字数组,或二者兼有,如果没有更多行则返回 FALSE。
mysql_fetch_array($result,MYSQL_NUM)=======mysql_fetch_array($result)
mysql_fetch_array($result,MYSQL_ASSOC)=======mysql_fetch_assoc($result)

mysql_fetch_array($result, MYSQL_ASSOC)

bool mysql_free_result ( resource result )
mysql_free_result函数作用是mysql_free_result() 仅需要在考虑到返回很大的结果集时会占用多少内存时调用。在脚本结束后所有关联的内存都会被自动释放。 如果成功则返回 TRUE,失败则返回 FALSE。

mysql_free_result($result);

bool mysql_close ( [resource link_identifier] )
mysql_close函数作用是mysql_close() 关闭指定的连接标识所关联的到 MySQL 服务器的非持久连接。如果没有指定 link_identifier,则关闭上一个打开的连接。 通常不需要使用 mysql_close(),因为已打开的非持久连接会在脚本执行完毕后自动关闭。

mysql_close($conn);

例:
 

复制代码 代码示例:

define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PWD', '123456');
define('DB_NAME', 'mtest');

$conn = mysql_connect('DB_HOST', 'DB_USER', 'DB_PWD');

mysql_select_db(DB_NAME, $conn);
mysql_query('SET NAMES UTF8');

$query = 'select * from message';
$result = mysql_query($query);

mysql_fetch_array($result, MYSQL_ASSOC);

mysql_free_result($result);
mysql_close($conn);