Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从mysql实现或切换到PDO_Php_Mysql_Pdo - Fatal编程技术网

Php 如何从mysql实现或切换到PDO

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

就我而言,我正在构建一个网站,并从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=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()
    • 用于使其调用数据库,以及
    • 使用
      $statement->
      //others()从该查询中获取信息
mysql[ext]有大量的安全漏洞

不,没有。
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等),并查看注释以获得更深入的理解。