以系统为windowns为例,
成都创新互联是一家专业提供贞丰企业网站建设,专注与成都网站设计、网站建设、H5网站设计、小程序制作等业务。10年已为贞丰众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
1、先PHP.INI中的oracle扩展也开启了
PHP下php.ini(注意,有时是在windows目录)修改下下
其中的
extension=php_oci8.dll 去掉前面的“;”号
extension=php_oracle.dll 去掉前面的“;”号
把php_oci8.dll 、和php_oracle.dll 文件复制到windwos的system32下
2、系统中应当有安装ORCALE的系统,然后配制远程ORACLE的的监听。就是你能用你配好的ORACLE系统访问远程的数据库。
{例:
在ORACLE安装目录下找到tnsnames.ora,然后按下面的例子配置一下
BASETEST 命名=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = XX.XX.XX.XX服务器IP地址)(PORT = 1521端口))
)
(CONNECT_DATA = (SERVICE_NAME = masprod 实例ID))
)
}
3.在你的PHP网页目录下写个测试连接的程序试试
?php
$dbconn=OCILogon("username","pwd","(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = [远程服务器IP])(PORT = 1515))
)
(CONNECT_DATA =
(SERVICE_NAME = [数据库名字])
))");
if($dbconn!=false)
{
echo "连接成功";
if(OCILogOff($dbconn)==true)
{
echo "关闭连接成功!";//=这里有问题
}
}
else
{
echo "连接失败";
}
?
第一个问题: $db是对象,对象调用成员方法就是-
第二个问题:mysql_query是php5之前的函数,他不太安全,其实还有mysqli_query扩展增强版,但这些都没有对象好用,为什么呢?因为每次使用都不是一个对象,但函数不一样,使用的是同一个函数,如果你学过java的线程大概就能知道怎么回事了。对象new 你不用之后会回收,但函数就未必了,这也是为安全考虑,目前对象比较安全。
第三个问题:这个问题很简单,你用的是对象连接,却使用函数,这本就不是一个东西,你没有给全局变量赋值(mysqli_connect($servername, $username, $password);),所以不能使用这个函数,这也就是安全问题(第二个问题,你看它一次只能使用一个连接,不像对象,可以new很多个,看出优劣了吧!这是进化的结果,因为php想干大型项目用对象,也比较最好管理),至于应该使用什么?$db -num_rows其实很简单的,就是把以前的函数封装成为对象,名字几乎不变
1、学习的方法,最好是看手册
在前一篇文章中涉及到了连接数据库sqlsrv_connect();还记得我们mysql连接数据库的时候也是mysql_connect();两者操作数据库是很相似的。从零基础开始学起的话,只能是查阅手册。查看一下sqlsrv有哪些函数提供我们使用!推荐网址是:
【注意】很多的方法都跟mysql提供的方法很相似,看到后面的函数名就大概知道里面的用法,比如说mysql执行sql语句的时候调用mysql_query();而sqlserver执行sql语句的时候调用也是sqlsrv_query(),但是特别注意一点就是,它们的传递参数不一样。详细的只能看一下手册。接下来我简单总结一下操作数据的方法
2、连接数据库sqlsrv_connect()
?php$serverName = "serverName\sqlexpress";//服务器的名字,本地localhost$connectionInfo = array( "Database"="dbName", "UID"="userName", "PWD"="password");$conn = sqlsrv_connect( $serverName, $connectionInfo);if( $conn ) { echo "Connection established.br /";
}else{ echo "Connection could not be established.br /"; die( print_r( sqlsrv_errors(), true));
}
3、操作数据库
1)执行sql语句sqlsrv_query(),返回值为true或者false,这里函数的用法跟mysql_query(),不一样。它需要把连接的资源句柄当作参数传进去,看源码。资源句柄就是上面代码连接数据库的“$conn”。
$sql = "select * from test1"; //sql语句$data = sqlsrv_query($conn,$sql); //$conn资源句柄if($data == true){ die("执行成功");
}else{ die("执行失败");
}
2)获取结果集
//以数值索引数组、关联数组或这两种数组的形式检索下一行的数据。类似于mysql_fetch_arraysqlsrv_fetch_array
//以对象形式检索下一行的数据。sqlsrv_fetch_object 1234
$sql = "select * from test1";$data = sqlsrv_query($conn,$sql);if($data == true){ while($row = sqlsrv_fetch_array( $data, SQLSRV_FETCH_ASSOC) ) { echo $row['id'].", ".$row['name']."br /";
}else{ die( print_r( sqlsrv_errors(), true));
}
}
$sql = "SELECT fName, lName FROM Table_1";$stmt = sqlsrv_query( $conn, $sql);if( $stmt === false ) { die( print_r( sqlsrv_errors(), true));
}while( $obj = sqlsrv_fetch_object( $stmt)) { echo $obj-fName.", ".$obj-lName."br /";
}
3)显示错误信息sqlsrv_errors():上面都有用到这个函数,只要是操作数据库发生错误,都可以使用这个函数打印出来看一下压
这里就不用上代码了
1、用 mysql_connect 的方法,PHP7会报致命错误
$conn= mysql_connect('localhost','xueyanxiang','xueyanxiang');
Fatal error : Uncaught Error: Call to undefined function mysql_connect() in /Users/xueyanxiang/work/test/xue.php:31 Stack trace: #0 /Users/xueyanxiang/work/test/xue.php(119): xue-run() #1 {main} thrown in /Users/xueyanxiang/work/test/xue.php on line 31
原因是:
PHP5中使用mysql_connect()函数进行连接,但实际上,PHP5.5开始,MySQL就不推荐使用了,属于废弃函数
PHP7中貌似已经彻底不支持了,根据官网说明,取而代之的是如下两个:
本扩展自 PHP 5.5.0 起已废弃,并在将来会被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。参见 MySQL:选择
API 指南以及相关 FAQ 以获取更多信息。用以替代本函数的有:
mysqli_connect()
PDO::__construct()
使用时,不要在使用mysql_connect了,可以换用mysqli_connect(),用法基本类似吧,据说是面向对象的库。
php.ini中,也只有extension=php_mysqli.dll,而不再有extension=php_mysql.dll这个拓展了。
2、可以使用mysqli,对象化,方法名与被废弃的类似
$conn= mysqli_connect('localhost','xueyanxiang','xueyanxiang');
3、PDO工具,推荐使用
$dbh= "mysql:host=localhost;dbname=test";
$db= new PDO($dbh,'xueyanxiang','xueyanxiang');
$objQuery= $db-query("select * from user;");
$res= $objQuery-fetchAll(PDO::FETCH_ASSOC);
不填写参数的话,默认是关联和索引都有,如下图