如何从mysql实现或切换到PDO

时间:2013-02-26 13:42:21

标签: php mysql pdo

就我而言,我正在建立一个网站并开始使用mysql。你如何编写网站代码使用PDO API而不是mysql API? PDO中mysql命令的等价物是什么?

例如:

$query = mysql_query(INSERT INTO users Values ('','$un','$fn','$ln','$em','$pswd','d','0')");

当您拥有'''0'时,正确的PDO语法是什么?

3 个答案:

答案 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即可。

基本概要:

答案 1 :(得分:0)

  

mysql [ext]具有重要的安全漏洞

不,它没有。
Mysql ext与使用它的开发人员一样好或坏 但没有什么比“重要的安全漏洞”更重要了。

所以,有一个快速修复: 只要您添加查询仅引用字符串,并始终正确格式化它们(使用mysql_real_escape_string) - 您就会非常安全。

答案 2 :(得分:0)

您发布的大多数代码都不需要更改,除了以下内容:

mysql_connect.inc.php(新的连接字符串)以及你称之为'mysql_query'的任何地方

你需要一个包装类(尝试这一个 - PDO wrapper)将直接sql转换为预备语句