修改
$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的文档。似乎这种结构也将部分起作用。它只是关闭它。
答案 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);
}