MySQLi是MySQL的一种改进版本,和MySQL相比,MySQLi提供了更好的性能、更好的功能,还支持面向对象和过程式API。
MySQLi相对于MySQL来说有以下的不同:
MySQLi支持预处理语句,减少SQL注入攻击的可能性。
mysqli与mysql示例区别
下面的代码演示了MySQLi和MySQL连接MySQL数据库的区别:
// MySQLi连接数据库
$mysqli = new mysqli("localhost", "root", "password", "database");
if($mysqli -> connect_error) {
die("连接失败:" . $mysqli -> connect_error);
} else {
echo "连接成功!";
}
// MySQL连接数据库
$con = mysql_connect("localhost", "root", "password");
if(!$con) {
die("连接失败:" . mysql_error());
} else {
echo "连接成功!";
}
从代码中可以看出,MySQLi使用面向对象的方式来连接数据库,而MySQL使用函数式的方式来连接数据库。
MySQLi还支持预处理语句,可以有效地防止SQL注入攻击。以下代码示例统计某表中某个字段值等于某个值的数据量:
// MySQLi预处理语句
$stmt = $mysqli -> prepare("SELECT COUNT(*) FROM table WHERE column = ?");
$stmt -> bind_param("s", $value); // 绑定参数
$stmt -> execute(); // 执行语句
$stmt -> bind_result($count); // 绑定结果
$stmt -> fetch(); // 获取结果
$stmt -> close(); // 关闭预处理语句
echo "符合条件的数据量为:" . $count;
// MySQL语句
$result = mysql_query("SELECT COUNT(*) FROM table WHERE column = '".$value."'");
$count = mysql_result($result,0);
mysql_free_result($result);
echo "符合条件的数据量为:" . $count;
从代码中可以看出,MySQLi使用预处理语句来执行SQL语句,通过绑定参数来有效地防止SQL注入攻击。而MySQL直接通过字符串拼接的方式执行SQL语句,容易受到SQL注入攻击。
本文链接:http://task.lmcjl.com/news/18319.html