mysql方式连接数据库案例
demo - mysql方式连接"; //指定网页标题
$servername = 'localhost';
$username = 'root';
$password = '';
$dbname = "classplatform";
// 创建连接,如果成功,则返回一个 MySQL 连接标识,失败则返回 FALSE。
$conn=mysql_connect($servername, $username, $password) or die('连接失败');
mysql_select_db($dbname);
//设置数据库数据以utf-8编码返回,
mysql_query('set names utf8');
//建立查询语句
$sql = "SELECT
t_software.num,
t_software.swname,
t_software.description,
t_cat.cat,
t_software.secretkey,
t_software.baidusecretlink,
t_software.created,
t_software.lastmodified
FROM
t_software
INNER JOIN t_cat ON t_software.category = t_cat.num";
$result = mysql_query($sql);
if ($result) {
echo "共获取到 ".mysql_num_rows($result)." 条记录 :
";
// 输出数据
echo "";
echo "num swname description cat secretkey baidusecretlink created lastmodified ";
/*
方式1:
$row=mysql_fetch_row($result)
方式2:
$row=mysql_fetch_array($result)
这4种写法都可以用来获取一行数据,方式1返回的数组是只包含值,我们只能$row[0], $row[1],这样以数组下标来读取数据,而方式2返回的数组既包含第一种,也包含键值对的形式,我们可以这样读取数据,
假如数据库的字段是 username,passwd): $row['username'], $row['passwd']
如果用($row as $kay => $value)来操作的话,还以直接取得数据库的字段名称。 */
while($row=mysql_fetch_array($result) ) {
echo "{$row['num']} {$row['swname']} {$row['description']} {$row['cat']} {$row['secretkey']} {$row['baidusecretlink']} {$row['created']} {$row['lastmodified']} ";
// echo "{$row[0]} {$row[1]} {$row[2]} {$row[3]} {$row[4]} {$row[5]} {$row[6]} {$row[7]} ";
}
echo "
";
} else {
echo "0 结果";
}
//只能使用这一种关闭连接的方式
mysql_close ( $conn );
?>
mysqli方式连接数据库案例
demo - mysqli方式连接"; //指定网页标题
$servername = 'localhost';
$username = 'root';
$password = '';
$dbname = "classplatform";
// 创建连接,返回一个代表到 MySQL 服务器的连接的对象
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检测连接
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
//设置数据库数据以utf-8编码返回,
mysqli_query($conn,'set names utf8');
//建立查询语句
$sql = "SELECT
t_software.num,
t_software.swname,
t_software.description,
t_cat.cat,
t_software.secretkey,
t_software.baidusecretlink,
t_software.created,
t_software.lastmodified
FROM
t_software
INNER JOIN t_cat ON t_software.category = t_cat.num";
//执行查询方式1
$result = $conn->query($sql);
//执行查询方式2
// $result = mysqli_query ( $conn, $query );
// 输出数据
if ($result->num_rows > 0) {
echo "共获取到 ".$result->num_rows." 条记录 :
";
echo "";
echo "num swname description cat secretkey baidusecretlink created lastmodified ";
/*
方式1:
$row=mysqli_fetch_row($result)
方式2:
$row=$result->fetch_row()
方式3:
$row=mysqli_fetch_array($result)
方式4:
$row = $result->fetch_assoc()
这4种写法都可以用来获取一行数据,前两种方式返回的数组是只包含值,我们只能$row[0], $row[1],这样以数组下标来读取数据,而后两种方式返回的数组既包含第一种,也包含键值对的形式,我们可以这样读取数据,
假如数据库的字段是 username,passwd): $row['username'], $row['passwd']
如果用($row as $kay => $value)来操作的话,还以直接取得数据库的字段名称。 */
while($row=$result->fetch_assoc()) {
echo "{$row['num']} {$row['swname']} {$row['description']} {$row['cat']} {$row['secretkey']} {$row['baidusecretlink']} {$row['created']} {$row['lastmodified']} ";
// echo "{$row[0]} {$row[1]} {$row[2]} {$row[3]} {$row[4]} {$row[5]} {$row[6]} {$row[7]} ";
}
echo "
";
} else {
echo "0 结果";
}
//关闭连接方式1
$conn->close();
//关闭连接方式2
// mysqli_close ( $conn );
?>
注意:
mysqli_query($con,'set names utf8');
mysql_query("SET NAMES 'utf8'");
mysql_query的参数只有一个,mysqli的需要两个,否则报错。
PHP-MySQL是PHP操作MySQL资料库最原始的Extension,PHP-MySQLi的i代表Improvement,提更了相对进阶的功能,就 Extension 而言,本身也增加了安全性。而PDO (PHP Data Object)则是提供了一个Abstraction Layer 来操作资料库。
先来看一段用 PHP-MySQL写成的程序:
在 PHP-MySQLi 中有了不少进步,除了透过Bind Column来解决上述问题,而且支持 Transaction, Multi Query,并且同时提供了 Object oriented style (下面这段 PHP-MySQLi 范例的写法)和 Procedural style (上面 PHP-MySQL范例的写法)两种写法。
prepare($sql);
$stmt->bind_param('dsss', $source_id, $source_name, $source_gender, $source_location);
$stmt->execute();
$stmt->bind_result($id, $name, $gender, $location);
while ($stmt->fetch())
{
echo $id . $name . $gender . $location;
}
$stmt->close();
$mysqli->close();
?>
mysql是非持继连接函数,而mysqli是永远连接函数。也就是说mysql每次链接都会打开一个连接的进程而mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销
有些朋友。在编程的时候,使用
new mysqli('localhost', usenamer', 'password', 'databasename');
总是报错,Fatal error: Class 'mysqli' not found in d:\...
mysqli类不是php自带的吗? 不是默认开启的,win下要改php.ini,去掉php_mysqli.dll前的;linux下要把mysqli编译进去。 Mysqli.dll是一个允许以对象的方式或者过程操作数据库的,它的使用方式也很容易。这里就几个常见的操作和mysql.dll做一个对比。
1. mysql.dll(可以理解为函数式的方式)
$conn = mysql_connect('localhost', 'user', 'password'); //连接mysql数据库
mysql_select_db('data_base'); //选择数据库
$result = mysql_query('select * from data_base');//这里有第二个可选参数,指定打开的连接
$row = mysql_fetch_row( $result ) ) ;/为了简单,这里只取一行数据
echo $row[0]; //输出第一个字段的值
2. mysqli.dll(对象方式)
$conn = new mysqli('localhost', 'user', 'password','data_base');
//这里的连接是new出来的,最后一个参数是直接指定数据库,不用mysql_select_db()了
//也可以构造时候不指定,然后 $conn -> select_db('data_base')
$result = $conn -> query( 'select * from data_base' );
$row = $result -> fetch_row(); //取一行数据
echo row[0]; //输出第一个字段的值
更主要的是mysqli是php5提供的新函数库,(i)表示改进,其执行速度更快。