PHP数据库与PHP常用函数学习笔记

PHP常用函数

    mysql_tablename — 取得表名
    string mysql_tablename ( resource $result , int $i )
    mysql_tablename() 接受 mysql_list_tables() 返回的结果指针以及一个整数索引作为参数并返回表名。可以用 mysql_num_rows() 函数来判断结果指针中的表的数目。用 mysql_tablename() 函数来遍历此结果指针,或者任何处理结果表的函数,例如 mysql_fetch_array()。
    
    mysql_list_tables — 列出 MySQL 数据库中的表
    Note: 该函数已经被删除了,请不要再使用该函数。您可以用命令 SHOW TABLES FROM DATABASE 来实现该函数的功能。
    
    mysql_query — 发送一条 MySQL 查询
    resource mysql_query ( string $query [, resource $link_identifier ] )
    mysql_query() 向与指定的连接标识符关联的服务器中的当前活动数据库发送一条查询。如果没有指定 link_identifier,则使用上一个打开的连接。如果没有打开的连接,本函数会尝试无参数调用 mysql_connect() 函数来建立一个连接并使用之。查询结果会被缓存。
    Note: 查询字符串不应以分号结束。

    mysql_fetch_array — 从结果集中取得一行作为关联数组,或数字数组,或二者兼有
    array mysql_fetch_array ( resource $result [, int $ result_type ] ) 返回根据从结果集取得的行生成的数组,如果没有更多行则返回 FALSE。
    mysql_fetch_array() 是 mysql_fetch_row() 的扩展版本。除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。
    如果结果中的两个或以上的列具有相同字段名,最后一列将优先。要访问同名的其它列,必须用该列的数字索引或给该列起个别名。对有别名的列,不能再用原来的列名访问其内容(本例中的 'field')。
    mysql_fetch_array() 中可选的第二个参数 result_type 是一个常量,可以接受以下值:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH。本特性是 PHP 3.0.7 起新加的。本参数的默认值是 MYSQL_BOTH。
    
    如果用了 MYSQL_BOTH,将得到一个同时包含关联和数字索引的数组。用 MYSQL_ASSOC 只得到关联索引(如同 mysql_fetch_assoc() 那样),用 MYSQL_NUM 只得到数字索引(如同 mysql_fetch_row() 那样)。
    Note: 此函数返回的字段名大小写敏感。

    mysql_num_fields — 取得结果集中字段的数目
    int mysql_num_fields ( resource $result ),为向下兼容仍然可以使用 mysql_numfields(),但反对这样做

    mysql_num_rows — 取得结果集中行的数目
    int mysql_num_rows ( resource $result )
    mysql_num_rows() 返回结果集中行的数目。此命令仅对 SELECT 语句有效。要取得被 INSERT,UPDATE 或者 DELETE 查询所影响到的行的数目,用 mysql_affected_rows()。

    mysql_fetch_lengths — 取得结果集中每个输出的长度
    说明:array mysql_fetch_lengths ( resource $result )以数组返回上一次用 mysql_fetch_row() 取得的行中每个字段的长度,如果出错返回 FALSE。 mysql_fetch_lengths() 将上一次 mysql_fetch_row(),mysql_fetch_array() 和 mysql_fetch_object() 所返回的每个列的长度储存到一个数组中,偏移量从 0 开始。

    object mysql_fetch_object ( resource $result )返回根据所取得的行生成的对象,如果没有更多行则返回 FALSE。 每行数据封装为一个对象,此时返回的行数保存在结果对象的num_rows成员变量中
    mysql_fetch_object() 和 mysql_fetch_array() 类似,只有一点区别 - 返回一个对象而不是数组。间接地也意味着只能通过字段名来访问对象,而不是偏移量(数字是合法的属性名)。

    isset — 检测变量是否设置
    说明:bool isset ( mixed $var [, mixed $var [, $... ]] ) 如果 var 存在则返回 TRUE,否则返回 FALSE。
    如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节("\0")并不等同于 PHP 的 NULL 常数。
    Note: 警告
    isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined() 函数。

    addslashes — 使用反斜线引用字符串
    说明:string addslashes ( string $str )返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。
    一个使用 addslashes() 的例子是当你要往数据库中输入数据时。例如,将名字 O'reilly 插入到数据库中,这就需要对其进行转义。大多数据库使用 \ 作为转义符:O\'reilly。这样可以将数据放入数据库中,而不会插入额外的 \。当 PHP 指令 magic_quotes_sybase 被设置成 on 时,意味着插入 ' 时将使用 ' 进行转义。
    默认情况下,PHP 指令 magic_quotes_gpc 为 on,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

    参见

■addslashes() - 使用反斜线引用字符串
■stripslashes() - 反引用一个引用字符串
■get_magic_quotes_runtime() - Gets the current active configuration setting of magic_quotes_runtime
■ini_get() - Gets the value of a configuration option

mysql_insert_id — 取得上一步 INSERT 操作产生的 ID
说明:
int mysql_insert_id ([ resource $link_identifier ] )
mysql_insert_id() 返回给定的 link_identifier 中上一步 INSERT 查询中产生的 AUTO_INCREMENT 的 ID 号。如果没有指定 link_identifier,则使用上一个打开的连接。
如果上一查询没有产生 AUTO_INCREMENT 的值,则 mysql_insert_id() 返回 0。如果需要保存该值以后使用,要确保在产生了值的查询之后立即调用 mysql_insert_id()。
Note: MySQL 中的 SQL 函数 LAST_INSERT_ID() 总是保存着最新产生的 AUTO_INCREMENT 值,并且不会在查询语句之间被重置。


---------------------------------------------
mysql_db_query — 发送一条 MySQL 查询

说明
resource mysql_db_query ( string $database , string $query [, resource $ link_identifier ] )
根据查询结果返回一个正的 MySQL 结果资源号,出错时返回 FALSE。本函数会对 INSERT/UPDATE/DELETE 查询返回 TRUE/FALSE 来指示成功或失败。
Note: 自 PHP 4.0.6 起不提倡使用此函数。不要用此函数,用 mysql_select_db() 和 mysql_query() 来替代。


mysql_fetch_row(),mysql_fetch_array()区别

这两个函数,返回的都是一个数组,区别就是第一个函数返回的数组是只包含值,我们只能$row[0],$row[1],这样以数组下标来读取数据,
而mysql_fetch_array()返回的数组既包含第一种,也包含键值对的形式,我们可以这样读取数据,(假如数据库的字段是 username,passwd):$row['username'], $row['passwd'].
而且,如果用($row as $kay => $value)来操作的话,还以直接取得数据库的字段名称。



<?php
	echo '<pre>';//输出结果格式化
	$link = mysql_connect("localhost", "root", "");//打开或重复使用一个到 MySQL 服务器的连接。 默认端口3306省略,也可'127.0.0.1'
	if(!$link)
	{
		die("Could not connect:". mysql_error());
	}else
	{
		echo 'connect  sucuess';
	}
	//上述可以用下一句代替
	//mysql_connect("localhost", "root", "") or die("Could not connect:". mysql_error());
	/*
	之所以 用 or 可以达到,当函数错误后,执行or后面的函数是因为:
	1.逻辑运算的运算顺序是从左向右
	2.or运算符的左结合性
	3.or运算中,如果运算时有值为真了,则整个表达式为真,后面不需要运算
	
	*/
	echo '<br />';
	//也可使用mysql_select_db("testdb", $link);
	mysql_select_db("testdb");//选择 MySQL 数据库,成功时返回 TRUE, 或者在失败时返回 FALSE. 每个其后的 mysql_query() 调用都会作用于活动数据库。
	//也可$result = mysql_query("SELECT * FROM sktb",$link);
	$result = mysql_query("SELECT * FROM sktb")
		 or die("Query failed: " . mysql_error());
	//print $result;
	//print_r ($result);
	
	//得到关联数组
	while($row = mysql_fetch_array($result,MYSQL_ASSOC)){
	//也可while($row = mysql_fetch_assoc($result)){
	//可以用mysql_fetch_array($result,MYSQL_NUM)得到枚举数组,等同于$row = mysql_fetch_row($result)
		print_r($row);
	}
	
	
	
	$result = mysql_query("SELECT * FROM sktb")
		 or die("Query failed: " . mysql_error());	
	while($row = mysql_fetch_object($result)){
		echo $row->username;	//		不能使用$row["username"];报错无法输出
		echo $row->age;
	}
	
	echo mysql_errno() . ": " . mysql_error(). "\n";
	
	
	$i = 0;
	//结果集被取空,需要重新生成结果集。
	$result = mysql_query("SELECT * FROM sktb")
		 or die("Query failed: " . mysql_error());
	while ($i < mysql_num_fields($result) ) {
		echo "Information for column $i:<br />\n";
		//mysql_fetch_field — 从结果集中取得列信息并作为对象返回 
		//$meta = mysql_fetch_field($result,$i);
		$meta = mysql_fetch_field($result);
    if (!$meta) {
        echo "No information available<br />\n";
    }
    echo "<pre>
blob:         $meta->blob
max_length:   $meta->max_length
multiple_key: $meta->multiple_key
name:         $meta->name
not_null:     $meta->not_null
numeric:      $meta->numeric
primary_key:  $meta->primary_key
table:        $meta->table
type:         $meta->type
unique_key:   $meta->unique_key
unsigned:     $meta->unsigned
zerofill:     $meta->zerofill
</pre>";
    $i++;
}

	
	
	mysql_free_result($result);
	mysql_close($link);
?>

<?php
	$mysql_host = 'localhost';
	$mysql_user = 'root';
	$mysql_password = '';
	$mysql_database = 'testdb';
	///*Connect to the local server
	$link = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die(mysql_error());
	mysql_select_db($mysql_database) or die(mysql_error());
	//set charset  设定字符集解决汉字问题
	mysql_query("set names 'gbk'");
	//如果在POST中设置email变量,说明是提交留言过来的,就处理插入操作
	if(isset($_POST['email']) && $_POST['email']){//只用$_POST['email']即可,或者empty()
		$email = addslashes($_POST['email']);		//分别接受用户提交过来的信息
		$title = $_POST['title'];
		$content = $_POST['content'];
		$ip = $_SERVER['REMOTE_ADDR'];	//客户端的IP地址
		$sql = "INSERT INTO testmsg VALUES (null, '$email', '$title', '$content', '$ip', now(), ". mysql_insert_id().")";	//无法插入,因此函数必须在insert完成后调用才有变化
		mysql_query($sql) or die($sql.mysql_error());
		echo(mysql_insert_id());
		
		$other = mysql_insert_id();
		$sql = "INSERT INTO testmsg VALUES (null, '$email', '$title', '$content', '$ip', now(), ".$other .")";	//可以插入
		mysql_query($sql) or die($sql.mysql_error());
		
		$is = "INSERT INTO testmsg VALUES (null, '123@123.com', 'bt', 'nrnrnrnrnr', '127.0.0.22',222,9999)";
		mysql_query($is) or die($is.mysql_error());
		$upd = "UPDATE testmsg SET email = '999@999.com' WHERE other = '9999'"; 
		mysql_query($upd) or die($upd.mysql_error());
		$del = "DELETE FROM testmsg WHERE id = '32'";
		mysql_query($del) or die($del.mysql_error());
	}
	//插入完毕

	?>


留言板的html文件代码为:

<form method = "POST" action = "testdb199.php">
	<table align = "center" width="90%">
		<tr>
			<td align = "right" width = "30%">邮箱</td>
			<td align = "left"><input type = "text" name = "email" size = "30" /></td>
		</tr>
		<tr>
			<td align = "right" >标题</td>
			<td><input type = "text" name = "title" size = "80" /></td>
		</tr>
		<tr>
			<td align = "right" width = "30%">留言</td>
			<td><textarea cols = "80" rows = "5" name = "content" ></textarea></td>
		</tr>
		<tr>
			<td colspan = "2" align = "center"><input type = "submit" value = "发布留言" /></td>
		</tr>
	</table>


</form>





  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值