-1

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

例如:

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

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

4

3 回答 3

1

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 的问题。

基本概要:

于 2013-02-26T13:50:31.207 回答
0

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

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

所以,有一个快速的解决方法:只要你只在查询中添加引用的字符串,并且总是正确地格式化它们(使用 mysql_real_escape_string)——你就很安全了。

于 2013-02-26T13:56:11.407 回答
0

您发布的大部分代码都不需要更改,但以下内容除外:

mysql_connect.inc.php(新的连接字符串)和任何你调用'mysql_query'的地方

您需要一个包装器类(试试这个 - PDO 包装器)将直接 sql 转换为准备好的语句

于 2013-02-26T13:59:38.077 回答