就我而言,我正在建立一个网站并开始使用mysql。你如何编写网站代码使用PDO API而不是mysql API? PDO中mysql命令的等价物是什么?
例如:
$query = mysql_query(INSERT INTO users Values ('','$un','$fn','$ln','$em','$pswd','d','0')");
当您拥有''
和'0'
时,正确的PDO语法是什么?
答案 0 :(得分:1)
mysql_connect.inc.php
$db = new PDO('mysql:host=localhost;dbname=socialnetwork', 'root', 'abc123');
然后,在任何有mysql_query的地方,您都需要使用PDO Query Methods。我将展示一个例子:
的index.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
}
}
只需用PDO语句替换mysql_*
并使用该API即可。
基本概要:
$db
是您与数据库的连接。$db->prepare()
会生成新的PDOstatement
,您可以:
$statement->bindParam()
设置查询参数(也可以直接发送到execute()
)$statement->execute()
使其调用数据库,$statement->
fetch()
/ fetchAll()
/ 其他人()从该查询中获取信息。答案 1 :(得分:0)
mysql [ext]具有重要的安全漏洞
不,它没有。
Mysql ext与使用它的开发人员一样好或坏
但没有什么比“重要的安全漏洞”更重要了。
所以,有一个快速修复: 只要您添加查询仅引用字符串,并始终正确格式化它们(使用mysql_real_escape_string) - 您就会非常安全。
答案 2 :(得分:0)
您发布的大多数代码都不需要更改,除了以下内容:
mysql_connect.inc.php(新的连接字符串)以及你称之为'mysql_query'的任何地方
你需要一个包装类(尝试这一个 - PDO wrapper)将直接sql转换为预备语句