php訪问mysql数据库

PHP訪问Mysql数据库
PHP能够通过mysql接口和mysqli接口訪问mysql数据库。

须要加入mysql和mysqli接口才干訪问mysql数据库。 windows下配置amp: a、安装apache: 找到\Apache\conf\httpd.conf文件。用记事本打开,找到:Define SRVROOT这一项,将其右方的值改为当前你Apache安装存放的文件夹地址,如:Define SRVROOT "D:/apache" 接下来须要配置安装Apache的主服务,有了它,Apache才可启动: 打开CMD窗体,输入:"D:\application_software\Apache\bin\httpd.exe" -k install -n apache 切记,包含引號。 在安装文件夹中。找到D:\application_software\Apache\bin\ApacheMonitor.exe可运行文件,双击运行。桌面右下角会出现图标,双击打开窗体界面。

点击左側start。启动apache服务。 注:若要卸载apache,命令下输入sc delete apache。 配置apache: 1、apacheserver配置文件httpd.conf中改动信息。默认路径为C:\ProgramFiles\Apache Software Foundation\Apache2.2。

httpd.conf文件在apacheserver文件夹下的conf文件夹中。在httpd.conf中加入信息: loadModule php5_module "C:/php/php5apache2_2.dll" --注:apache中载入php模块 AddType application/x-httpd-php .php .html .htm PHPIniDir "D:/Web/PHP5.2.17/php.ini" --注:指定php.ini配置文件的文件夹,加入这句后就不用把php.ini放到C:/windows文件夹下了。

注: --AddType 是让apache解析.php .html .htm三种文件里的php代码。 2、载入mysql库(php5.3以上版本号没有libmysql.dll),能够在httpd.ini中载入php5_module前,加入这句:LoadFile "E:\server\php528\libmysql.dll"或者将php文件夹下的libmysql.dll文件拷贝到C:\windows文件夹下。

或者能够将php文件夹加入进环境变量path中。 配置php.ini: 1、将PHP文件夹下的php.ini-recommended文件改名为php.ini。在php.ini文件里加入以下的信息: extension_dir="C:/php/ext" --注:指定php扩展文件夹的位置 extension=php_mysql.dll --开启mysql和mysqli动态链接库 extension=php_mysqli.dll 假设php.ini中有"extension=./",直接将等号后面的值改为上面的路径。假设存在extension=php_mysql.dll和extension=php_mysqli.dll。并且前面有分号,那么将分号去掉就可以。php.ini中分号用来表示后面的信息的凝视。 2、单击全部程序|apache http server 2.2|control apache server|restart选项重新启动apacheserver。 3、之后就可以在apacheserver安装文件夹下的htdocs文件夹下新建test.php文件。该文件里输入:<?php phpinfo(); ?> php下载地址:http://www.php.net/downloads.php VC11 x86 Non Thread Safe 版本号用于iis。VC11 x86 Thread Safe 用于apache 注:phpinfo()显示configuration file (php.ini)path 的值若为C:\windows。这表示配置文件php.ini默认存放位置是C:\windows。loaded configuration file 的值若为C:\windows\php.ini,这表示从该文件里载入php配置文件。 linux下配置php 1、将php-5.2.11.tar.gz拷贝到/usr/local/src文件夹下,然后在该文件夹下解压和安装php。 命令: cp /home/hih/download/php-5.2.11.tar.gz /usr/local/src/ --将文件拷贝到/usr/local/src/下 cd /usr/local/src/ --将文件夹切换到/usr/local/src/下 tar -xzvf php-5.2.11 --解压tar.gz压缩包 cd php-5.2.11 --将文件夹切换到php-5.2.11下 --设置编译选项 通过--prefix、--with-mysql、--with-mysqli等选项来进行设置 ./configure --prefix=/usr/local/php --with-mysql=/usr/local --with-mysqli=/usr/bin/mysql_config make --開始编译 make install --进行安装 make clean --清除编译结果 注:--prefix:设置安装路径。--with-mysql:php中加入传统的mysql接口。其后面的值是mysql的安装路径;--with-mysqli:php中加入mysqli接口。很多其它參数能够通过"./confiure --help"来查看。 2、開始配置apacheserver的httpd.conf文件 假设apacheserver安装在/usr/local/apache文件夹下,那么httpd.conf就应该在/usr/local/apache/conf/文件夹下。

用vi打开httpd.conf,加入以下信息: loadModule php5_module modules/libphp5.so AddType application/x-httpd-php .php 再重新启动apacheserver:/etc/init.d/httpd restart 測试php是否成功安装能够在/var/www/html/文件夹下创建test.php文件。如: <?php phpinfo(); ?

> 连接mysql数据库 php能够通过mysql或mysqli接口连接mysql数据库。 1、mysql接口提供mysql_connect()方法来连接mysql数据库,如: $connection=mysql_connect("host/IP","username","password"); 还能够指定登录到哪一个数据库如: $connection=mysql_connect("host/IP","username","password","database"); 2、mysqli接口下有两个比較经常使用的类,各自是mysqli和mysqli_result。

mysqli主要用与mysql数据库建立连接。当中query()方法用来运行sql语句。mysqli_result主要用于处理select语句的查询结果。如: $connection=new mysqli("host/IP","username","password","database"); 注:mysqli接口仅仅支持php5和mysql4.1之后的版本号。

假设须要兼容老版本号的php和mysql数据库就仅仅能选myql接口。

mysqli接口提供了很多其它的函数功能比mysql接口强大。mysqli_connect_errno()函数能够推断php连接mysql数据库时是否出错。

假设出错该函数返回true。

mysqli_connect_error()函数将返回出错信息。假设连接数据库后。能够通过select_db()函数选择数据库。还能够通过get_client_info()、get_server_info()等函数获取mysql信息。

例:连接数据库 <?php $connection=new mysqli("localhost","root","huang","test"); if(mysqli_connect_error()){ echo "<p>连接失败:",mysqli_connect_error(),"</p>\n"; exit(); } else{ echo "<p>连接成功</p>\n"; } ?> php操作mysql数据库 php能够通过query()函数对数据进行查询、插入、更新和删除等操作。可是query()函数一次仅仅能运行一条sql语句。

通过multi_query()函数能够一次运行多个sql语句。

语句运行成功query()返回true,否则返回false。并能够通过affected_rows()函数获取发生变化的记录数。 例1:php通过query()函数运行语句 $result=$connection->query("insert into score values(11,908,'法语',88)"); if($result){ echo "<p>insert语句运行成功</p>"; echo "<p>插入的记录数:",$connection->affected_rows,"</p>";//返回插入的记录数 } else{ echo "<p>insert语句运行失败</p>"; } 例2: $result=$connection->query("select * from score");//运行select语句 if($result){//$result为空值时运行成功 echo "<p>select 语句运行成功</p>"; echo "<p>查询的记录数:",$result->num_rows,"</p>";//输出查询的记录数 echo "<p>查询的字段数:",$result->field_count,"</p>";//输出查询的字段数 } else{ echo "<p>select语句运行失败</p>";//$result为空值时运行失败 } 处理查询结果 query()函数成功运行select后会返回一个mysqli_result对象$result。select语句查询结果都存储在$result中。mysqli提供4种方法读取数据: 1)、$rs=$result->fetch_row():以普通数值的形式返回记录,通过$rs[$n]来获取字段的值。$rs[0]表示第一个字段。后面依次类推。 2)、$rs=$result->fetch_array():以关联数组的形式返回记录,能够通过$rs[$n]或者$rs["columnName"]来获取字段的值。比如,第一个字段的字段名为id,能够通过$rs[0]或者$rs["id"]来获取id字段的值。 3)、$rs=$result->fetch_assoc():以关联数组的形式返回记录。但仅仅能通过$rs["columnName"]的方式来获取字段的值。 4)、$rs=$result->fetch_object():以对象的形式返回记录。通过$rs->columnName的方式来获取字段值。比如,通过$rs->id来获取id字段的值。 例1:fetch_row()函数返回select语句的查询结果 $result=$connection->query("select * from score"); while($rs=$result->fetch_row()){ echo "<p>",$rs[0],"\t",$rs[1],"\t",$rs[2],"\t",$rs[3],"</p>"; } 例2:通过fetch_array()函数返回select语句的查询结果。如: $result=$connection->query("select * from score"); while($rs=$result->fetch_array()){ echo "<p>",$rs["id"],"\t",$rs["stu_id"],"\t",$rs[2],"\t",$rs[3],"</p>"; } 例3:通过fetch_object()函数返回select语句的查询结果。如: $result=$connection->query("select * from score"); while($rs=$result->fetch_object()){ echo "<p>",$rs->id,"\t",$rs->stu_id,"\t",$rs->c_name,"\t",$rs->grade,"</p>"; } 注:假设希望改变读取记录的顺序能够用data_seek()函数。还能够通过htmlspecialchars()函数将数据库中的特殊字符按HTML标准进行转换。

获取查询结果的字段名 通过fetch_fields()函数获取查询结果的具体信息,该函数返回对象数组。

通过该对象数组能够获取字段名、表名等信息。

如,$info=$result->fetch_fields()能够产生一个对象数组$info。

然后通过$info[$n]->name获取字段名,$info[$n]->table获取表名。 例:fetch_fields()函数获取查询结果的字段名和所在表的名称,如: $result=$connection->query("select * from score"); $num=$result->field_count;//计算查询的字段数 $info=$result->fetch_fields();//获取记录的字段名、表名等信息 echo "<p>table:",$info[0]->table,"</p>";//输出表名称 for($i=0;$i<$num;$i++){ echo $info[$i]->name,"\t";//输出字段名称 } 一次运行多个sql语句 query()函数一次仅仅能运行一条sql语句。而multi_query()函数能够一次运行多个sql语句。

假设第一个sql语句正确运行,那么multi_query()函数返回true,否则返回false。php使用store_result()函数获取multi_query()函数运行查询的记录。

一次仅仅能获取一个sql语句的运行结果。能够用next_result()函数推断下一个sql语句的结果是否存在。如存在。next_result()函数返回true。否则。返回false。 例:用multi_query()函数一次性运行两个select语句 $sql="select * from score;select * from student"; $rs=$connection->multi_query($sql);//用multi_query()方法运行select语句 if($rs){ $result=$connection->store_result();//将查询结果赋值给$result while($row=$result->fetch_object()){ //通过fetch_object()函数取出每条记录的值 echo "<p>",$row->id,"\t",$row->stu_id,"\t",$row->c_name,"\t",$row->grade,"</p>"; } if($connection->next_result()){//推断是否还有下一个select语句的查询结果 $result=$connection->store_result();//将查询结果赋值给$result while($row=$result->fetch_object()){ echo "<p>",$row->id,"\t",$row->name,"\t",$row->sex,"\t",$row->birth,"</p>"; } } } 注:store_result函数一次读取一个sql语句的全部运行结果,并将结果全部返回到client。除了该函数外还能够用use_result()函数来读取运行结果。该函数将读取的结果存储在server端。每次仅仅向client传送一条记录。 处理带參数的sql语句 php中能够运行带參数的sql语句。带參数的sql语句能够不指定某个字段的值而用问号"?

"取代。

然后在后面的语句中指定值来替换问号。通过prepare()函数将带參数的sql语句进行处理。如: $stmt=$mysqli->prepare("insert into table(name1,name2) values(?,?)"); 注:在后面的语句为这两个字段设置值。prepare()函数返回一个mysqli_stmt对象,该对象通过bind_param()方法为每一个变量设置数据类型,bind_param()方法中使用不同的字母来表示数据类型。如: a、i表示整数。当中包含int、tinyint、bigint等 b、d表示浮点数。当中包含float、double、decimal等 c、s表示字符串。当中包含char、varchar、text等 d、b表示二进制数据。当中包含blob等。 bind_param()函数中将数据类型与相应变量相应。如: $stmt->bind_param('idsb',$var1,$var2,$var3,$var4); 注:变量$var1相应字母i,表示整数类型;$var2相应字母d表示浮点数类型。赋值完毕后能够通过execute()方法运行sql语句。如:$stmt->execute(); 例:向表插入两条记录,如: $stmt=$mysqli->prepare("insert into score(id,stu_id,c_name,grade) values(?

,?,?,?)");//问号取代具体值 $stmt->bind_param('iisi',$id,$stu_id,$c_name,$grade);//给变量设置数据类型 $id=15; $stu_id=908; $c_name="数学"; $grade=85; $stmt->execute(); $id=16; $stu_id=909; $c_name="数学"; $grade=88; $stmt->execute();//运行insert语句 注:上面的方法不仅能够运行insert语句还能够运行update语句和delete语句。

能够通过$stmt->affected_rows属性返回影响的记录数。 关闭创建的对象 1、对mysql数据库訪问之后必须关闭创建的对象。连接数据库时创建了$connection对象,处理sql语句的运行结果时创建了$result对象。操作完毕后这些对象都必须使用close()方法关闭,形式如: $result->close(); $connection->close(); 2、假设使用了prepare()函数,那么一定会返回mysqli_stmt对象。假设execute()方法运行完后。也能够通过close()方法关闭该对象。

如mysqli_stmt对象为$stmt,如: $stmt->close(); php备份与还原mysql数据库 能够使用system()函数或exec()函数来调用mysqldump命令和mysql命令。用来备份还原。 备份 system()函数的形式如: system("mysqldump -h hostname -u user -ppassword database [table] > dir/backup.sql"); 注:须要将mysql的应用程序的路径加入到系统变量的path变量中。如不加入也能够使用完整路径。如: system("C:/mysql/bin/mysqldump -h hostname -u user -ppassword database [table] > dir/backup.sql"); 另外。linux下要注意权限问题。仅仅有拥有root权限或myql权限的用户才干正确运行这段代码。 还原 <?php system("mysql -h hostname -u user -ppassword database < C:/test.sql"); ?> 注:假设调用mysqldump命令出错。能够先測试system()或exec()函数是否可用,能够:<?

php print_r(system("dir"))?> 该语句调用windows系统的dir命令。假设页面输出了文件和文件夹的信息。说明system()可用。。linux系统下能够測试ls命令。再检測mysqldump命令是否启用:<?

php print_r(system("mysqldump --help"))?>假设页面不能输出帮助信息,说明mysqldump命令没有加入到系统的环境变量中。

能够指定完整路径。或者linux下改动.bashrc文件或改动/etc/profile文件来加入系统的环境变量。 综合实例: 1、用php訪问mysql数据库,要求: 通过mysqli接口连接mysql中的test数据库,用multi_query()函数同一时候运行两个selecct语句,在页面是那个显示查询结果。第一行显示字段名,以下每行显示一条记录,最后关闭全部对象。 <?

php $conn=new mysqli("localhost","root","root","test"); if(mysqli_connect_errno()){ echo "<p>连接失败:",mysqli_connect_error(),"</p>"; exit(); //用exit退出操作 } else{ echo "<p>连接成功</p>"; $sql="select id,name,department from student;select stu_id,c_name,grade from score"; if($conn->multi_query($sql)){ //推断multi_query函数是否成功运行了第一个select,返回true表示成功。 $result=$conn->store_result();//获取第一个select语句的运行结果 $num=$result->field_count;//获取结果的字段数 $info=$result->fetch_fields();//获取字段的信息 echo "<p>表名为:",$info[0]->table,"</p>";//获取表名称 for($i=0;$i<$num;$i++){ //输出字段名称 echo $info[$i]->name,"\t"; } while($row=$result->fetch_object()){ //输出字段的值 echo "<p>",$row->id,"\t",$row->name,"\t",$row->department,"</p>"; } $result->close(); //关闭$result对象 if($conn->next_result()){ //推断是否还有其它记录,true表示还有 $result=$conn->store_result(); //获取下一个sql语句的结果 $num=$result->field_count; //获取字段数 $info=$result->fetch_fields(); //获取字段的信息,并输出字段的名称 echo "<p>表名为:",$info[0]->table,"</p>";//输出表名称 for($i=0;$i<$num;$i++){ //输出字段名称 echo $info[$i]->name,"\t"; } while($row=$result->fetch_row()){ //输出字段的值 echo "<p>",$row[0],"\t",$row[1],"\t",$row[2],"</p>"; } $result->close(); } echo "<p>查询结束,全部结果已经输出</p>"; } } $conn->close(); ?>


转载于:https://www.cnblogs.com/zhchoutai/p/7086148.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值