PHP-试图将Mysqli转换为PDO

时间:2016-12-22 15:39:45

标签: php pdo

我正在尝试将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

4 个答案:

答案 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>"; 
}