php_mysql.dll和php_mysql.dll php_pdo.dll

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php_mysql.dll和php_mysql.dll php_pdo.dll相关的知识,希望对你有一定的参考价值。

php5.5时候,mysql_connect也就是对应的是php_mysql.dll官方就不建议使用,所以在php7时候,直接删除掉了这个dll扩展文件。

技术分享

菜鸟教程直接删掉了这个了,很尴尬,只剩下这两个东西给我们玩了。

PHP-MySQL 是 PHP 操作 MySQL 资料库最原始的 Extension ,PHP-MySQLi 的 i 代表 Improvement ,提更了相对进阶的功能,就 Extension 而言,本身也增加了安全性。

demo:

<?php 
mysql_connect($db_host, $db_user, $db_password); 
mysql_select_db($dn_name); 
$result = mysql_query("SELECT `name` FROM `users` WHERE `location` = ‘$location‘"); 
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
{ 
echo $row[name]; 
} 
mysql_free_result($result); 
?> 
<?php 
$mysqli = new mysqli($db_host, $db_user, $db_password, $db_name); 
$sql = "INSERT INTO `users` (id, name, gender, location) VALUES (?, ?, ?, ?)"; 
$stmt = $mysqli->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(); 
?> 
PECL是什么东西来的呢???!!!记得去查查‘20170716
<?php 
$dsn = "mysql:host=$db_host;dbname=$db_name"; 
$dbh = new PDO($dsn, $db_user, $db_password); 
$sql = "SELECT `name`, `location` FROM `users` WHERE `location` = ? , `name` = ?"; 
$sth = $dbh->prepare($sql); 
$sth->execute(array($location, $name)); 
$result = $sth->fetch(PDO::FETCH_OBJ); 
echo $result->name . $result->location; 
$dbh = NULL; 
?> 

三个,没看出什么区别,好像就是写法吧,苦笑/哭笑/

插曲:

预防 SQL Injection的 function: mysql_real_escape_string()
example:
mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。

// 转义用户名和密码,以便在 SQL 中使用
$user = mysql_real_escape_string($user);
$pwd = mysql_real_escape_string($pwd);

$sql = "SELECT * FROM users WHERE
user=" . $user . " AND password=" . $pwd . "‘"

如果不转义SQL就会变成:
SELECT * FROM users
WHERE user=john AND password=‘‘ OR ‘‘=‘‘
至于在$_POST变量塞上 ; drop table user;什么的就是另外一回事了。

预防数据库攻击的正确做法:
function check_input($value)
{
// 去除斜杠
if (get_magic_quotes_gpc())
  {
  $value = stripslashes($value);
  }
// 如果不是数字则加引号
if (!is_numeric($value))
  {
  $value = "" . mysql_real_escape_string($value) . "";
  }
return $value;
}

mysql是非持继连接函数而mysqli是永远连接函数。

mysql每次链接都会打开一个连接的进程而mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销 

mysqli不是默认开启的,win下要改php.ini,去掉php_mysqli.dll前的;,linux下要把mysqli编译进去。 

插曲:

mysql_fetch_row(),mysql_fetch_array() 这两个函数,返回的都是一个数组,区别就是第一个函数返回的数组是只包含值,
我们只能$row[0], $row[1],这样以数组下标来读取数据,而mysql_fetch_array()返回的数组既包含第一种,也包含键值 对的形式,
我们可以这样读取数据,(假如数据库的字段是 username,passwd): $row[username], $row[passwd] 而且,
如果用($row as $kay => $value)来操作的话,还以直接取得数据库的字段名称。 更主要的是mysqli是php5提供的新函数库,(i)表示改进,其执行速度更快.

 

以上是关于php_mysql.dll和php_mysql.dll php_pdo.dll的主要内容,如果未能解决你的问题,请参考以下文章

php.ini中找不到extension=php_mysql.dll

PHP学习

您的PHP似乎没有 MySQL 拓展

mysql配置

navicat怎么配置thinkphp

php安装的问题,无法载入 mysql 扩展,请检查 PHP 配置