
$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=localhostdbname=test"
$db= new PDO($dbh,'xueyanxiang','xueyanxiang')
$objQuery= $db->query("select * from user")
$res= $objQuery->fetchAll(PDO::FETCH_ASSOC)
不填写参数的话,默认是关联和索引都有,如下图
我也刚刚学PHP,正在研究中,虽然你只给10分........首先,将代码保存到一个文件,如:mysql.class.php
其次,在一个常用的文件里调用:比如头部文件header.php,因为我放在根目录所以用下面方式导入其他文件:
require dirname(__FILE__) . 'include/config.php'
//导入类文件
require dirname(__FILE__) . 'include/mysql.class.php'
//定义一个类及初始化数据库类
$db = new mysql($db_host, $db_user, $db_pass, $db_name)
$db_host = $db_user = $db_pass = $db_name = NULL
然后,在test.php文件调用:
require_once dirname(__FILE__) . '/header.php'
使用方法:
$sql = "读取表"
$res = $db->query($sql)
$info = array()//定义数组
while($row=$db->fetchRow($res))
{
$arr['id'] = $row['id']
$arr['title'] = $row['title']
$info[] = $arr
}
可以在显示的地方用:
foreach($info as $i)
{
echo $i['title']."<br />"
}
或是直接使用while
还用另一种调用方式:
$here_area = $db->getRow("select areaid,areaname from {$table}area where areaid='$areaid'")
$here[] = array('name'=>$here_area['areaname'],'id'=>$here_area['areaid'])
测试通过,因为我正在使用.....................................
config.php代码:
<?php
$db_host = "localhost"
$db_name = "test"
$db_user = "root"
$db_pass = ""
$table = "mini_"
$charset = "gb2312"
$dbcharset = "gbk"
?>
mysql.class.php代码:
<?php
class mysql
{
var $link= NULL
//自动执行__construct php5类构建方法,如果PHP4和PHP5同时使用会自动使用PHP5的方法
function __construct($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $quiet = 0)
{
//自动执行时调用mysql函数
$this->mysql($dbhost, $dbuser, $dbpw, $dbname, $pconnect, $quiet)
}
//php4类构建方法,如果没有 __construct 就自动执行此功能
function mysql($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $quiet = 0)
{
if ($quiet)
{
$this->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, $quiet)
}
else
{
$this->settings = array(
'dbhost' =>$dbhost,
'dbuser' =>$dbuser,
'dbpw' =>$dbpw,
'dbname' =>$dbname,
'charset' =>$charset,
'pconnect' =>$pconnect
)
}
}
function connect($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $quiet = 0)
{
global $dbcharset
if ($pconnect)
{
if (!($this->link = @mysql_pconnect($dbhost, $dbuser, $dbpw)))
{
if (!$quiet)
{
$this->ErrorMsg("Can't pConnect MySQL Server($dbhost)!")
}
return false
}
}
else
{
if (PHP_VERSION >= '4.2')
{
$this->link = @mysql_connect($dbhost, $dbuser, $dbpw, true)
}
else
{
$this->link = @mysql_connect($dbhost, $dbuser, $dbpw)
mt_srand((double)microtime() * 1000000)
}
if (!$this->link)
{
if (!$quiet)
{
$this->ErrorMsg("Can't Connect MySQL Server($dbhost)!")
}
return false
}
}
$this->dbhash = md5($this->root_path . $dbhost . $dbuser . $dbpw . $dbname)
$this->version = mysql_get_server_info($this->link)
if ($this->version >'4.1')
{
if ($dbcharset != 'latin1')
{
mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary", $this->link)
}
if ($this->version >'5.0.1')
{
mysql_query("SET sql_mode=''", $this->link)
}
}
if ($dbname)
{
if (mysql_select_db($dbname, $this->link) === false )
{
if (!$quiet)
{
$this->ErrorMsg("Can't select MySQL database($dbname)!")
}
return false
}
else
{
return true
}
}
else
{
return true
}
}
function query($sql, $type = '')
{
if ($this->link === NULL)
{
$this->connect($this->settings['dbhost'], $this->settings['dbuser'], $this->settings['dbpw'], $this->settings['dbname'], $this->settings['charset'], $this->settings['pconnect'])
$this->settings = array()
}
if ($this->queryCount++ <= 99)
{
$this->queryLog[] = $sql
}
if ($this->queryTime == '')
{
if (PHP_VERSION >= '5.0.0')
{
$this->queryTime = microtime(true)
}
else
{
$this->queryTime = microtime()
}
}
if (!($query = mysql_query($sql, $this->link)) &&$type != 'SILENT')
{
$this->error_message[]['message'] = 'MySQL Query Error'
$this->error_message[]['sql'] = $sql
$this->error_message[]['error'] = mysql_error($this->link)
$this->error_message[]['errno'] = mysql_errno($this->link)
$this->ErrorMsg()
return false
}
return $query
}
function affected_rows()
{
return mysql_affected_rows($this->link)
}
function num_fields($query)
{
return mysql_num_fields($query)
}
function error()
{
return mysql_error($this->link)
}
function errno()
{
return mysql_errno($this->link)
}
function num_rows($query)
{
return mysql_num_rows($query)
}
function insert_id()
{
return mysql_insert_id($this->link)
}
function fetchRow($query)
{
return mysql_fetch_assoc($query)
}
function fetcharray($query)
{
return mysql_fetch_array($query)
}
function version()
{
return $this->version
}
function close()
{
return mysql_close($this->link)
}
function ErrorMsg($message = '', $sql = '')
{
if ($message)
{
echo "$message\n\n"
}
else
{
echo "<b>MySQL server error report:"
print_r($this->error_message)
}
exit
}
function getCol($sql)
{
$res = $this->query($sql)
if ($res !== false)
{
$arr = array()
while ($row = mysql_fetch_row($res))
{
$arr[] = $row[0]
}
return $arr
}
else
{
return false
}
}
function getOne($sql, $limited = false)
{
if ($limited == true)
{
$sql = trim($sql . ' LIMIT 1')
}
$res = $this->query($sql)
if ($res !== false)
{
$row = mysql_fetch_row($res)
if ($row !== false)
{
return $row[0]
}
else
{
return ''
}
}
else
{
return false
}
}
function getAll($sql)
{
$res = $this->query($sql)
if ($res !== false)
{
$arr = array()
while ($row = mysql_fetch_assoc($res))
{
$arr[] = $row
}
return $arr
}
else
{
return false
}
}
//使用: getRow($sql,true) 如果有true那值是 limit 1,读取一条信息
function getRow($sql, $limited = false)
{
if ($limited == true)
{
$sql = trim($sql . ' LIMIT 1')
}
$res = $this->query($sql)
if ($res !== false)
{
return mysql_fetch_assoc($res)
}
else
{
return false
}
}
}
?>
首先你想要理解数据库抽象层的概念,理解这时候你就知道ADODB的作用了,php虽然对大多数数据库都支持,但是每种数据库都有很大差异,这样当你更换数据库的时候,就要改动大量代码,ok,有了ADODB你完全没有了这些烦恼!目前最新版本是:adodb516a ,下载地址:http://sourceforge.net/projects/adodb/files/adodb-php5-only/adodb-516-for-php5/
adodb目前支持mysql、postgresql、oracle、interbase、microsoft sql server、access、foxpro、sybase、odbc及ado。另外adodb不仅对select *** 作提供强大支持,对update和insert也提供强大支持。使用了ADODB后,对于系统的移植将会变得轻而易举。
adodb使用案例很多,像PostNuke、phpwiki等很多开源系统都使用adodb作为数据库抽象层!
那么今天就来看看使用adodb并连接mysql数据库的简单教程!
<?php
//adodb.inc.php包含所有数据库类包含的使用函数,必须加载
require_once './adodb5/adodb.inc.php'
//创建连接对象,接受使用的数据库
$conn = &ADONewConnection('mysql')
//那么开始连接mysql数据库了
$conn->connect('localhost','root','','test')
//设置字符编码
$conn->Execute("set names utf8")
$res = $conn->Execute("select * from user")
if (!$res){
echo $conn->ErrorMsg()
}else{
var_dump($res)
}
?>
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)