从现在已弃用的 mysql 代码切换到 PDO。该代码应该输出表中的所有值。这是代码:
$stmt = $pdo->prepare('SELECT * FROM admin WHERE user_id = :user_id');
$stmt->bindParam(':user_id', $userid);
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
调用这些字段的代码是:
$data_t .= '<td>' . $row['date'] . '</td>';
$data_t .= '<td>' . $row['length'] . '' . $selected . '</td>';
$data_t .= '<td>' . $row['ground'] . '' . $selected . '</td>';
由于某种原因,不是输出所有选定的匹配值,而是只输出一个。现在,我还使用计数函数来显示一个人已创建的条目数,并且显示的条目数比数据库中的实际条目数少了一个。 (这意味着如果存在 5,它会显示数字计数 4)以下是该代码:
$rResult = $stmt->fetchAll();
$gorResult = count($rResult);
我尝试在这段代码中使用 fetchAll() ,但它什么也没返回。我知道我一定错过了一些东西,对于头脑清醒的人来说这可能很简单。同样,问题是此调用仅输出一行,而不是所有匹配的行。
$stmt = $pdo->prepare('SELECT * FROM admin WHERE user_id = :user_id');
$stmt->bindParam(':user_id', $userid);
$stmt->execute();
$rResult = $stmt->fetchAll();
$gorResult = count($rResult);
foreach($rResult as $row) {
$data_t = '<b>Length: '. $strt_length .' </b> | <b>Ground: '. $strt_ground .' </b>';
$data_t .= '<span class="label label-success">'. $gorResult .' Entries Total</span>';
$data_t .= '<table class="table table-striped">';
$data_t .= '<thead>';
$data_t .= '<tr>';
$data_t .= '<th>' . $table_fields['jo_col_1_name'] . '</th>';
$data_t .= '<th>' . $table_fields['jo_col_2_name'] . '</th>';
$data_t .= '<th>' . $table_fields['jo_col_3_name'] . '</th>';
$data_t .= '</tr>';
$data_t .= '</thead>';
$data_t .= '<tbody>';
$data_t .= '<tr>';
$data_t .= '<td>' . $row['date'] . '</td>';
$data_t .= '<td>' . $row['length'] . '' . $selected . '</td>';
$data_t .= '<td>' . $row['ground'] . '' . $selected . '</td>';
$data_t .= '<td>';
if (!$del_hide) {
$data_t .= "<form method='post' action='');' />";
$data_t .= "<input type='hidden' name='primary_key' value='".$row["primary_key"]."' />";
$data_t .= '<button type="submit" name="deleteItem" value="delete" class="btn btn-link">';
$data_t .= '<span class="glyphicon glyphicon-remove"></span></button>';
} else { };
$data_t .= '<button type="image" name="image" value="image" class="btn btn-link">';
$data_t .= '<span class="glyphicon glyphicon-picture"></span></button>';
$data_t .= '</form>';
}
$data_t .= '</td>';
$data_t .= '<td>';
$data_t .= '</td>';
$data_t .= '</tr>';
$data_t .= '</tbody>';
$data_t .= '</table>';
echo $data_t;
?>
最佳答案
据我了解你的长篇大论,你正在做这样的事情
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { // fetching one row
$data_t .= '<td>' . $row['date'] . '</td>'; // using row
$rResult = $stmt->fetchAll(); // FETCHING REST OF ROWS
...
} // no more rows for the next iteration
虽然必须如此
$data = $stmt->fetchAll(); // fetching rows
$count = count($data); // getting count
foreach($data as $row) { // iterating over rows
$data_t .= '<td>' . $row['date'] . '</td>'; // using row
}
关于php - fetch(PDO::FETCH_ASSOC 只返回一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18693027/