将Mysqli转换为PDO

时间:2013-11-17 23:44:40

标签: pdo mysqli

修改

$sql = "SELECT " . $tb . ".a
       FROM " . $tb . 
       " WHERE " . $tb . ".b = :b";

$sth = $con->prepare($sql);
$sth->execute(array(':b' => $b));
$row = $sth->fetch(PDO::FETCH_ASSOC);
$row = $row[b];

想要添加这只是执行和数组所做的一个简短的例子。 $ row的转换只是一个测试。

不管你信不信,解决方案对我来说是一个虚假的举动。解决方案是将$ row ['b']转换为$ row [b]。只需删除引号即可。一切都已完成并正在运作。哦,还把东西推到了$ sql中,所以它让事情更好看。

ORIGINAL

我正在将我的代码从Mysqli交换到PDO。并且可以在这里使用一些帮助。

$row = $con->query(
           $con->prepare(
               "SELECT " . $tb . ".a
               FROM " . $tb . " 
               WHERE " . $tb . ".b = '" . $b . "'"
           )->execute()
)->fetch(PDO::FETCH_ASSOC);

我原来的Mysqli在我正在做的事情上工作得很好:

$row = mysqli_fetch_row(
           mysqli_query(
               $con,"SELECT " . $tb . ".a
               FROM " . $tb . " 
               WHERE " . $tb . ".b = '" . $b . "'"
           )
);

if (isset($row))

允许我在$ row上进行操作。最后,我想以与创建Mysqli类似的方式创建PDO。也许还有变化,但主要关注的是尝试让代码发挥作用。然后可以在之后添加。感谢。

P.S。我知道PDO代码是错误的,所以请不要指出显而易见的。告诉我它有多好用。我在这篇文章之前的5分钟就尝试过学习PDO。所以放轻松。 :)

P.S.S。如果$ row存在,此代码是从mysql获取的代码。改变了一点并由我合并。然后终于移植到Mysqli。现在尝试将其移植到PDO。我正在阅读有关PDO的文档。似乎这种结构也将部分起作用。它只是关闭它。

1 个答案:

答案 0 :(得分:1)

我使用以下模式,它具有阻止SQL注入的优势:

$statement = $con->prepare("SELECT * FROM table WHERE id = :id");
$statement->bindValue(":id", $id);
$statement->execute();
while($row = $statement->fetch(PDO::FETCH_ASSOC)) {
    print_r($row);
}