= mysql_query("SELECT `name` FROM `users` WHERE `location` = ‘$location‘");while ($row =mysql_fetch_array($result, MYSQL_ASSOC))
{
echo $row[‘name‘];
}
mysql_free_result($result);?>
$mysqli= newmysqli($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
$dsn= "mysql:host=$db_host;dbname=$db_name";
$dbh= newPDO($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