我正在尝试将Mysqli代码转换为使用PDO
Mysqli代码如下所示(效果很好)
$rs = "SELECT * FROM team";
$result = mysqli_query($con,$rs);
$data = mysqli_num_rows($result);
$responses = array();
if($data != 0) {
while($results = mysqli_fetch_assoc($result))
{
echo "<tr><td>".$results['code'] ."</td>";
echo "<td>".$results['username'] ."</td>";
}
我尝试了我的PDO代码
$stmt = $con->prepare("select * from team");
$stmt->execute();
if($stmt->rowCount() > 0)
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
我应该如何在这里写一个while循环
在w3schools网站上,使用PDO检索记录的信息如下,没有说什么是V,也没有说我如何检索字段code
和{{1}从表中。
username
答案 0 :(得分:3)
从数据库中选择数据是一种非常糟糕的方式。它比必要的要复杂得多。我认为可能在某个特定环境中有用,但不是在这里。
简单的方法是使用PDOStatement::fetch
。这与mysqli_fetch_assoc
的工作方式大致相同。 (严格来说,您不需要检查行数,但如果没有结果,您可能会有其他代码。)
while ($row = $stmt->fetch()) {
echo "<tr><td>".$row['code'] ."</td>";
echo "<td>".$row['username'] ."</td>";
}
然而,我首选的方法是PDOStatement::bindColumn
,它取消了数组并使用了很好的普通变量:
$stmt->setFetchMode(PDO::FETCH_BOUND);
$stmt->bindColumn('code', $code);
$stmt->bindColumn('username', $username);
while ($row = $stmt->fetch()) {
echo "<tr><td>$code</td>";
echo "<td>$username</td>";
}
答案 1 :(得分:3)
它是PDO,所以everything is MUCH simpler:
foreach ($con->query("SELECT * FROM team") as $results) {
echo "<tr><td>".$results['code'] ."</td>";
echo "<td>".$results['username'] ."</td>";
}
答案 2 :(得分:2)
$stmt = $con->prepare("select * from team");
$stmt->execute();
if($stmt->rowCount() > 0)
{
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
echo "<tr><td>".$row['code'] ."</td>";
echo "<td>".$row['username'] ."</td>";
}
}
答案 3 :(得分:2)
$rs = "SELECT * FROM team";
$stmt = $pdo->query($rs );
while ($row = $stmt->fetch())
{
echo "<tr><td>".$row ['code'] ."</td>";
echo "<td>".$row ['username'] ."</td></tr>";
}
或
$stmt = $pdo->query($rs );
foreach ($stmt as $row)
{
echo "<tr><td>".$row ['code'] ."</td>";
echo "<td>".$row ['username'] ."</td></tr>";
}
或
$data = $pdo->query($rs )->fetchAll();
foreach ($data as $row)
{
echo "<tr><td>".$row ['code'] ."</td>";
echo "<td>".$row ['username'] ."</td></tr>";
}