Php 如何从mysql实现或切换到PDO
就我而言,我正在构建一个网站,并从mysql开始。如何使用PDOAPI而不是mysql API编写网站代码?PDO中mysql命令的等价物是什么 例如:Php 如何从mysql实现或切换到PDO,php,mysql,pdo,Php,Mysql,Pdo,就我而言,我正在构建一个网站,并从mysql开始。如何使用PDOAPI而不是mysql API编写网站代码?PDO中mysql命令的等价物是什么 例如: $query = mysql_query(INSERT INTO users Values ('','$un','$fn','$ln','$em','$pswd','d','0')"); 当您有'和'0'时,正确的PDO语法是什么 mysql\u connect.inc.php $db = new PDO('mysql:host=localh
$query = mysql_query(INSERT INTO users Values ('','$un','$fn','$ln','$em','$pswd','d','0')");
当您有'
和'0'
时,正确的PDO语法是什么 mysql\u connect.inc.php
$db = new PDO('mysql:host=localhost;dbname=socialnetwork', 'root', 'abc123');
然后,在任何有mysql_查询的地方,都需要使用。我将展示一个示例:
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()
- 用于设置查询参数(也可以直接发送到
)execute()
- 用于使其调用数据库,以及
- 使用
//others()从该查询中获取信息$statement->
- 用于设置查询参数(也可以直接发送到
Mysql ext与使用它的开发人员一样好或一样坏。
但没有什么能比得上“重大安全漏洞” 因此,有一个快速解决方案:
只要您只在查询中添加带引号的字符串,并且始终正确格式化它们(使用mysql\u real\u escape\u string),您就相当安全了 您发布的大部分代码无需更改,以下代码除外: mysql\u connect.inc.php(新连接字符串)和任何您称为“mysql\u query”的地方
您需要一个包装类(试试这个-)来将直接的sql转换为一个准备好的语句很抱歉,您没有提供足够的代码。你能发布更多吗?好吧…阅读PDO的工作原理并开始转换。或者请专业人士帮你做。所以这不是一个“给我代码”的页面……对不起,这是我为我正在构建的网站所拥有的全部代码。它不完整,我需要在其中实现
PDO
。我目前实现了mysql
,它有安全漏洞。我已经在看教程和其他网站,如net.tutsplus和phpmaster,但它所做的一切都令人困惑。只要解释一下如何将一部分(如登录脚本)更改为使用pdo
而不是mysql
,我就可以开始着手了。如果我理解了pdo
@TillHelgeHelwig语法的动态性,我就能够做到这一点。这似乎是我在要求代码,但我真正想知道的是pdo如何工作的基础。我理解mysql的语法工作方式,因此使用起来更容易一些。PDO,但我没有。我真的很擅长举例,并从那里开始。Brad Christie的答案正是我想要的,告诉我所有需要更改的内容,以及从那里做什么的结构化解释,尽管这可能不是PDO中的所有命令/定义,但它仍然是一个开始。尽管我同意,卫生确实可以接受,PDO可以说是一个更好的实践,可以进入和避免大多数那些“我忘记了……”的情况。考虑到这个项目的范围,OP只需要向医生询问3个问题。Brad,非常感谢你的帮助。正如我在我的问题帖子上面的评论中所说,这正是我想要的。如果我使用$statement->bindParam()
,我会把$statement->bindParam(':username',$un,PDO::PARAM_INT)
放在哪里:username
=变量的参数名,$un
=要绑定的变量,以及PDO:PARAM_INT
=是否存储输入的内容?@christophennett:。在PHP文档中有每个调用的示例。只需访问PDOStatement文档,点击每个方法(bindParam、execute、fetch等),并查看注释以获得更深入的理解。