php分享十八七:mysql基础
mysql操作数据库代码:
$link = @mysql_connect('localhost:3306', 'root', 'root') or die(mysql_error()); mysql_select_db('12306', $link) or die ('Can\'t use foo : ' . mysql_error()); $sql = "select `true_name`, `username` from `12306` limit 1"; $rs = mysql_query($sql, $link); if (!$rs) { die('Invalid query: ' . mysql_error()); } while($row = mysql_fetch_array($rs, MYSQL_ASSOC)) { print_r($row); } mysql_free_result($link); mysql_close($link); exit;
mysql_num_rows() 返回结果集中行的数目。此命令仅对 SELECT 语句有效。要取得被 INSERT,UPDATE 或者 DELETE 查询所影响到的行的数目,用 mysql_affected_rows()。
一:mysql操作函数
resource mysql_connect ([ string $server
[, string $username
[, string $password
[, bool$new_link
[, int $client_flags
]]]]] ):
注意:
1:脚本一结束,到服务器的连接就被关闭,除非之前已经明确调用 mysql_close() 关闭了。
2:可以在函数名前加上一个 @ 来抑制出错时的错误信息。
resource mysql_pconnect ([ string $server
[, string $username
[, string $password
[, int$client_flags
]]]] )
注意:
此种连接仅能用于模块版本的 PHP。
mysql_pconnect() 和 mysql_connect() 非常相似,但有两个主要区别。
首先,当连接的时候本函数将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接。
其次,当脚本执行完毕后到 SQL 服务器的连接不会被关闭,此连接将保持打开以备以后使用(mysql_close() 不会关闭由 mysql_pconnect() 建立的连接)。
mysql_select_db ( string $database_name
[, resource $ link_identifier
]
成功时返回 TRUE
, 或者在失败时返回 FALSE
。
mysql_select_db() 设定与指定的连接标识符所关联的服务器上的当前激活数据库。如果没有指定连接标识符,则使用上一个打开的连接。如果没有打开的连接,本函数将无参数调用 mysql_connect() 来尝试打开一个并使用之。
每个其后的 mysql_query() 调用都会作用于活动数据库。
resource mysql_query ( string $query
[, resource $link_identifier
= NULL ] )
link_identifier
MySQL 连接。如不指定连接标识,则使用由 mysql_connect() 最近打开的连接。如果没有找到该连接,会尝试不带参数调用 mysql_connect() 来创建。如没有找到连接或无法建立连接,则会生成 E_WARNING
级别的错误。
mysql_query() 仅对 SELECT,SHOW,DESCRIBE, EXPLAIN 和其他语句 语句返回一个 resource,如果查询出现错误则返回 FALSE
。
对于其它类型的 SQL 语句,比如INSERT, UPDATE, DELETE, DROP 之类, mysql_query() 在执行成功时返回 TRUE
,出错时返回 FALSE
。
假定查询成功,可以调用 mysql_num_rows() 来查看对应于 SELECT 语句返回了多少行,或者调用mysql_affected_rows() 来查看对应于 DELETE,INSERT,REPLACE 或 UPDATE 语句影响到了多少行。
如果没有权限访问查询语句中引用的表时,mysql_query() 也会返回 FALSE
。
int mysql_affected_rows ([ resource $link_identifier
= NULL ] )
取得前一次 MySQL 操作所影响的记录行数
int mysql_insert_id ([ resource $link_identifier
] )
取得上一步 INSERT 操作产生的 ID
bool mysql_ping ([ resource $ link_identifier
] )
Ping 一个服务器连接,如果没有连接则重新连接
int mysql_thread_id ([ resource $link_identifier
] )
返回当前线程的 ID
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$thread_id = mysql_thread_id($link);
if ($thread_id){
printf ("current thread id is %d\n", $thread_id);
}
?>
resource mysql_list_processes ([ resource $link_identifier
] )
列出 MySQL 进程
mysql_unbuffered_query — 向 MySQL 发送一条 SQL 查询,并不获取和缓存结果的行
mysql_unbuffered_query() 的好处是有代价的:在 mysql_unbuffered_query() 返回的结果集之上不能使用mysql_num_rows() 和 mysql_data_seek()。
此外在向 MySQL 发送一条新的 SQL 查询之前,必须提取掉所有未缓存的 SQL 查询所产生的结果行。