码迷,mamicode.com
首页 > 数据库 > 详细

php_mysql.dll和php_mysql.dll\ php_pdo.dll

时间:2017-07-16 12:31:27      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:word   .com   example   inject   dbn   mysq   斜杠   users   john   

从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

标签:word   .com   example   inject   dbn   mysq   斜杠   users   john   

原文地址:http://www.cnblogs.com/haveadream435/p/7189948.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!