首页 > 编程知识 正文

php操作mysql时(php与mysql)

时间:2023-12-15 00:36:31 阅读:315736 作者:YYOI

本文目录一览:

怎样用PHP中的MySQL操作函数

1. 建立MySQL 连接:mysql_connect

resource mysql_connect([string $server[, string $username [, string $password [, bool $new_link [, int $client flags]]]]])

打开或重复使用一个到MySQL服务器的连接。其中,server代表MySQL服务器,可以包括端口号,例如“hostname:port”。username和password分别代表登录MySQL服务器使用的用户名和密码。

2. 选择 MySQL 数据库:mysql_select_db

bool mysql_select_db(string $database_name[, resource $link_identifier])

设定与指定的连接标识符所关联的服务器上的当前数据库。如果没有指定连接标识符,则使用上一个打开的连接。如果没有打开的连接,本函数将无参数地调用mysql_connect()来尝试打开一个数据库连接。如果成功则返回true,失败则返回false。每个其后的mysgl_query()调用都会作用于活动数据库。

3. 执行查询:mysql_query

resource mysql_query(string $query[, resource $link_identifier])

向与指定的连接标识的关联的服务器中的当前活动数据库发送一条查询。如果没有指定 link_identifier,则使用上一个打开的连接。如果没有打开的连接,本函数会尝试无参数地调用mysql_connect()函数来建立一个连接,查询结果会被缓存。mysql_query()仅对SELECT、SHOW、EXPLAIN或DESCRIBE语句返回一个资源标识符,如果查询执行不正确则返回false。对于其他类型的SQL语句,mysgl_query()在执行成功时返回true,出错时返回false。非false的返回值意味着查询是合法的并能够被服务器执行但是并不说明任何影响到的或返回的行数。因为一条查询执行成功了但并未影响到或并未返回任何行的情况是可能发生的。

4. 从结果集中取得一行作为枚举数组:mysql_fetch_row

array mysql_fetch_row(resource $result)

从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个索引数组的单元中,偏移量从0开始。依次调用mysql_fetch_row()将返回结果集中的下一行,如果没有更多行则返回false。

5. 从结果集中取得一行作为关联数组,或数字数组,或二者兼有:mysql_fetch_array

array mysql_fetch_array(resource $result[, int $result_type])

mysql_fetch_row()的扩展版本。除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。如果结果中出现字段名重名的现象,最后一列将优先。要访问同名的其他列,必须用该列的数字索引或给该列起个别名。对有别名的列,用别名来访问其内容。

6. 关闭 MySQL 连接:mysql_close

bool mysql_close([resource $link_identifier])

mysql_close()关闭指定的连接标识所关联的到MySQL服务器的非持久连接。如果没有指定link_identifier,则关闭上一个打开的连接。

例PHP中使用MySQL数据库(mysql.php)

?php//连接MySQL数据库

mysql_connect('localhost', 'root', '123');

//选择当前数据库

//等效为执行USE test

mysql_select_db('test');

//在当前数据库执行SQL语句

$query = "SELECT * FROM students";

$result = mysql_query($query);

//操作上次查询返回的结果集,注意$result变量一般是需要的

while($student = mysql_fetch_array($result)) {

echo 'pre';

print_r($student);

echo '/pre';

}

?

关于php操作mysql执行数据库查询的一些常用操作汇总

php操作mysql步骤:

1.$connect=mysql_connect('localhost','root','123456')

or

die('数据库连接失败。'mysql_error());链接mysql。

2.mysql_select_db('database',$connect)选择链接的数据库。

3.mysql_query('Set

names

gb2312');$sql

=

"select

*

from

blog_article";准备要查询的数据。

4.$datas

=

mysql_query($sql);执行sql查询。

5.$data

=

mysql_fetch_assoc($datas)得到查询到的缓存在内存中的一条数据。

6.print_r($data);

相同点:三个函数都是返回数据库中查询到的一行数据(说的再清楚点就是一条数据)。

不同点:mysql_fetch_assoc()用的是数据库中相应的字段名作为的key值(也就是数组下标)

如:filed['id']=1;

mysql_fetch_row()用的是自动生成的数字(从0开始依次生成)作为的key值(也就是数组下标)

如:filed[0]=1;

mysql_fetch_array()用的是自动生成的数字(从0开始依次生成)作为的key值(也就是数组下标),而且它还同时生成数据库中相应的字段名作为的key值(也就是数组下标)

如:

filed[0]=1,filed['id']=1;也就是说,mysql_fetch_array()将mysql_fetch_assoc()和mysql_fetch_row()查询到的结果合为了一体了。

mysql_fetch_object()与mysql_fetch_assoc()差不多。只是mysql_fetch_assoc()返回的是数组。mysql_fetch_object()返回的是object对象。

mysql_insert_id() 取得上一步

INSERT

操作产生的

ID。

mysql_result()

函数返回结果集中一个字段的值。

mysql_num_fields()

函数返回结果集中字段的数目。

mysql_affected_rows();返回前一次

MySQL

操作所影响的记录行数。

mysql_num_rows(mysql_query($sql))获得结果集中行的数目。

mysql_pconnect()

函数打开一个到

MySQL

服务器的持久连接。

mysql_pconnect()

mysql_connect()

非常相似,但有两个主要区别:

1.

当连接的时候本函数将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接。

2.

其次,当脚本执行完毕后到

SQL

服务器的连接不会被关闭,此连接将保持打开以备以后使用(mysql_close()

不会关闭由

mysql_pconnect()

建立的连接)。

mysql_data_seek(mysql_query($sql),8);获得结果集中的第8条数据。(mysql_num_rows(mysql_query($sql))和mysql_data_seek(mysql_query($sql),8)在mysql_unbuffered_query($sql)不可以使用。)

mysql_unbuffered_query($sql)和mysql_query($sql)效果差不多,但是

mysql_unbuffered_query($sql)不缓存。mysql_query($sql)会缓存查询的结果。

mysql_close();关闭mysql的最近的链接。

mysql_field_flags(mysql_query($sql),6)返回第六个字段的表属性输出如:not_null

primary_key

auto_increment

mysql_fetch_lengths(mysql_query($sql))返回该条数据的所有字段的每个字段的长度。返回的是一个数字组成的数组。

mysql_field_name(mysql_query($sql),3)返回第三个字段的字段名。

mysql_field_table(mysql_query($sql),0)返回指定字段所在的表名。

mysql_free_result(mysql_query($sql))

函数释放结果内存。

mysql_get_client_info()

函数返回

MySQL

客户端信息。

mysql_get_host_info()

取得

MySQL

主机信息。

PHP中如何操作MySQL

在这种情况下,虽然省略了分号,但是 PHP 在执行 MySQL 命令时会自动的帮你加上的。另外还有一个不要加分号的情况。当你想把要字段的竖者排列显示下来,而不是像通常的那样横着排列时,你可以用 G 来结束一行 SQL 语句,这时就用不上分号了,例如:SELECT * FROM PENPALS WHERE USER_ID = 1G TEXT、DATE、和 SET 数据类型MySQL 数据表的字段必须有定义一个数据类型。这有大约 25 种选择,大部分都是直接明了的,就不多费口舌了。但有几个有必要提一下。TEXT 不是一种数据类型,虽然可能有些书上是这么说的。它实际上应该是“ LONG VARCHAR ”或者“ MEDIUMTEXT ”。DATE 数据类型的格式是 YYYY-MM-DD ,比如: 1999-12-08 。你可以很容易的用 date 函数来得到这种格式的当前系统时间: date("Y-m-d")并且,在 DATA 数据类型之间可以作减法,得到相差的时间天数:$age = ($current_date - $birthdate); 集合SET 是一个有用的数据类型,它和枚举 ENUM 有点相似,只不过是 SET 能够保存多个值而 ENUM 只能保存一个值而已。而且, SET 类型最多只能够有 64 个预定的值,而 ENUM 类型却能够处理最多 65,535 个预定义的值。而如果需要有大于 64 个值的集合,该怎么办呢?这时就需要定义多个集合来一起解决这个问题了。通配符SQL 的通配符有两种:“ * ”和“ % ”。分别用在不同的情况下。例如:如果你想看到数据库的所有内容,可以像这样来查询:SELECT * FROM dbname WHERE USER_ID LIKE '%'; 这儿,两个通配符都被用上了。他们表示相同的意思 ? 都是用来匹配任何的字符串,但是他们用在不同的上下文中。“ * ”用来匹配字段名,而“ % ”用来匹配字段值。另外一个不容易引起注意的地方是“ % ”通配符需要和 LIKE 关键字一起使用。还有一个通配符,就是下划线“ _ ”,它代表的意思和上面不同,是用来匹配任何单个的字符的。NOT NULL 和空记录一个值为 NULL 的纪录和一个空纪录是有一些区别的。 % 通配符可以匹配空纪录,但是却不能匹配 NULL 纪录。在某些时候,这种区别会造成一些意想不到的后果。就我的经验而言,任何字段都应该声明为 NOT NULL 。这样下面的 SELECT 查询语句就能够正常运转了: if (!$CITY) {$CITY ="%";}$selectresult = mysql_query ("SELECT * FROM dbname WHERE FIRST_NAME =' 柳' AND LAST_NAME =' 如风' AND CITY LIKE '$CITY' "); 在第一行中,如果用户没有指定一个 CITY 值,那么就会用通配符 % 来代入 CITY 变量,这样搜索时就会把任何的 CITY 值都考虑进去,甚至包括那些 CITY 字段为空的纪录。但是如果有一些纪录,它的 CITY 字段值是 NULL ,这时问题就出现了。上面的查询是不能够找到这些字段的。问题的一个解决办法可以是这样: if (!$CITY) { $CITY ="%"; }$selectresult = mysql_query ("SELECT * FROM dbname WHERE FIRST_NAME =' 柳' AND LAST_NAME =' 如风' AND (CITY LIKE '$CITY' OR CITY IS NULL)"); 注意在搜索 NULL 时,必须用“ IS ”关键字,而 LIKE 时不会正常工作的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。