Câu hỏi liên quan

0 Phiếu
4 Câu trả lời
0 Phiếu
1 Trả lời
Đã hỏi 25/4/2016 bởi SvaPost (560 điểm)
0 Phiếu
0 Câu trả lời
Đã hỏi 25/4/2016 bởi gaier (420 điểm)

Làm thế nào để đếm hàng trong một thời gian loop bằng cách sử dụng pdo fetch


0 Phiếu
Đã hỏi 25/5/2016 bởi una_6611 (280 điểm)
Tôi đã sử dụng mysqli_fetch_array và đếm những là đúng cho đến khi tôi thay đổi để fetch(), bây giờ chỉ trả về tổng số hàng thay vì trở về mỗi số cho mỗi hàng. Vì vậy cho hàng một, tôi muốn echo "1", và như vậy. NEW NOTE : tất cả mọi thứ khác trong thời gian statement trả lại giá trị chính xác, ngoại trừ counter mà trả về tổng số hàng trong khi tôi muốn một số hàng theo thứ tự nó đã được lựa chọn từ các lệnh SQL. theo yêu cầu. Đây là kết nối của tôi. tôi không biết nếu tôi giả sử để kiểm tra "$e-> getMessage ();" trên mỗi query kể từ khi tôi đang sử dụng kết nối này cho tất cả các truy vấn của tôi.
try {
    $dbh = new PDO('mysql:host=localhost;dbname=my_db;charset=utf8', 'usr', 'pwd',
                    array(PDO::ATTR_EMULATE_PREPARES => false, 
                          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
                  );
} catch (PDOException $e){
    echo $e->getMessage();
}
, điều này làm việc
$query = mysqli_query($con, 'SELECT * FROM music');
$count = 0;
while($row = mysqli_fetch_array($query)){
    $count++; 
    echo $count;
}
mới không làm việc.
$query = $dbh->query('SELECT * FROM music');
$count = 0;
while($row = $query->fetch()){
    $count++; 
    echo $count;
}

3 Câu trả lời

0 Phiếu
Đã trả lời 04/6/2016 bởi Gann_5404 (440 điểm)
được bình chọn là câu trả lời hay nhất 05/6/2016 bởi Ury_eva
 
Câu trả lời hay nhất
Công trình sử dụng tốt, sử dụng một bắt thử xem nếu kết nối PDO của bạn đang làm việc.
try {
    $dbh = new PDO('mysql:host=localhost;dbname=db', 'root', 'root',
                       array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}  catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
$sql = 'SELECT * FROM music';
$sth = $dbh->query($sql);
$count = 0;
while($row = $sth->fetch()){
    $count++; 
    echo $count;
}
tôi đã chỉ thử nghiệm này và nó hoạt động tốt. Kết nối PDO của bạn là không chính xác hoặc query của bạn trả về không có kết quả. Tôi đề nghị bạn var_dump($dbh) và xem nó có trả lại PDO object hoặc xem query của bạn là chính xác. Được gọi là table của bạn music? Đó là case nhạy cảm. Bạn cũng cần phải thay đổi của bạn kết nối form mysqli PDO
$mysqli = new mysqli("localhost", "user", "password", "database");
để
$dbh = new PDO('mysql:host=localhost;dbname=database', 'user', 'password');
bạn cũng có thể ném PDO ngoại lệ để xem nếu bất kỳ xảy ra: PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
Đã bình luận 05/6/2016 bởi Ury_eva (100 điểm)
, Yeah tôi đang sử dụng pdo
–1 Phiếu
Đã trả lời 04/6/2016 bởi Following (130 điểm)
Công trình sử dụng tốt, sử dụng một bắt thử xem nếu kết nối PDO của bạn đang làm việc.
try {
    $dbh = new PDO('mysql:host=localhost;dbname=db', 'root', 'root',
                       array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}  catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
$sql = 'SELECT * FROM music';
$sth = $dbh->query($sql);
$count = 0;
while($row = $sth->fetch()){
    $count++; 
    echo $count;
}
tôi đã chỉ thử nghiệm này và nó hoạt động tốt. Kết nối PDO của bạn là không chính xác hoặc query của bạn trả về không có kết quả. Tôi đề nghị bạn var_dump($dbh) và xem nó có trả lại PDO object hoặc xem query của bạn là chính xác. Được gọi là table của bạn music? Đó là case nhạy cảm. Bạn cũng cần phải thay đổi của bạn kết nối form mysqli PDO
$mysqli = new mysqli("localhost", "user", "password", "database");
để
$dbh = new PDO('mysql:host=localhost;dbname=database', 'user', 'password');
bạn cũng có thể ném PDO ngoại lệ để xem nếu bất kỳ xảy ra: PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
Đã bình luận 06/6/2016 bởi Example_487 (100 điểm)
Đã bình luận 06/6/2016 bởi something (455,900 điểm)
PDO có hành vi khác nhau một chút. Đây là một thay thế cho của bạn mysqli (http://stackoverflow.com/questions/ 25199122 /how-to-count-rows-in-a-while-loop-using-pdo-fetch/ 25367887 # 25367887).
0 Phiếu
Đã trả lời 04/6/2016 bởi Nf_116 (480 điểm)
Hãy thử sử dụng PDO::FETCH_NUM để có được số lượng hàng trực tiếp:-
$countquery = $dbh->query('SELECT COUNT(1) FROM music');
$rowCount = 0;
$rowCount = $countquery ->fetch(PDO::FETCH_NUM);
echo $rowCount;
//And then do another query for the real data if need be
* điều này làm cho việc sử dụng một query để có được số lượng hàng, và giúp bạn tiết kiệm thời gian bằng thời gian vòng lặp.
Đã bình luận 04/6/2016 bởi verda (910 điểm)
bạn vẫn còn sử dụng mysqli hoặc bây giờ PDO?
Đã bình luận 06/6/2016 bởi Whats_horn (110 điểm)
PDOStatement:: rowCount — trả về số lượng hàng bị ảnh hưởng bởi tuyên bố SQL cuối

ToughDev Q&A là gì?

Trang web hỏi đáp cho các bạn đam mê lập trình, phát triển phần mềm và các vấn đề kỹ thuật khác. Với sự giúp đỡ của bạn, chúng tôi hy vọng sẽ xây dựng thành công một thư viện đầy đủ các câu hỏi và trả lời về tất cả các vấn đề có liên quan đến lập trình!







...