就我而言,我正在建立一个网站并从 mysql 开始。您如何使用 PDO API 而不是 mysql API 编写网站代码?PDO中mysql命令的等价物是什么?
例如:
$query = mysql_query(INSERT INTO users Values ('','$un','$fn','$ln','$em','$pswd','d','0')");
''
当您拥有and时,正确的 PDO 语法是什么'0'
?
mysql_connect.inc.php
$db = new PDO('mysql:host=localhost;dbname=socialnetwork', 'root', 'abc123');
然后,在任何有 mysql_query 的地方,都需要使用PDO 查询方法。我将展示一个示例:
索引.php
// instead of:
$u_check = mysql_query("SELECT username FROM users WHERE username='$un'");
// use:
$statement = $db->prepare('SELECT username FROM users WHERE username = :username');
if ($statement->execute(array(':username' => $un))) {
// query succeeded
if ($statement->rowCount() > 0){
// user exists
}
}
这只是mysql_*
用 PDO 语句替换并使用该 API 的问题。
基本概要:
$db
是您与数据库的连接。$db->prepare()
生成一个新的PDOstatement
然后你可以:
$statement->bindParam()
设置查询参数(也可以直接发送到execute()
)$statement->execute()
使其调用数据库,以及$statement->
fetch()
// others()fetchAll()
从该查询中获取信息。mysql [ext] 具有重大的安全漏洞
不,它没有。
Mysql ext 与使用它的开发人员一样好或一样坏。
但是没有什么比得上“重大安全漏洞”了。
所以,有一个快速的解决方法:只要你只在查询中添加引用的字符串,并且总是正确地格式化它们(使用 mysql_real_escape_string)——你就很安全了。
您发布的大部分代码都不需要更改,但以下内容除外:
mysql_connect.inc.php(新的连接字符串)和任何你调用'mysql_query'的地方
您需要一个包装器类(试试这个 - PDO 包装器)将直接 sql 转换为准备好的语句