Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > เกิดอะไรขึ้นเมื่อ Fetch Array ออกมาได้ แต่.. Count นับเป็น 0



 

เกิดอะไรขึ้นเมื่อ Fetch Array ออกมาได้ แต่.. Count นับเป็น 0

 



Topic : 110988



โพสกระทู้ ( 178 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook



Code ตามนี้เลยครับ

Code (PHP)
    
    public function __construct() {
           $server = 'Crazy\INTz';
           $dbname = 'mvc';
           $user   = 'sa';
           $password = '12345678';
        parent::__construct('mssql:host='.$server.';'.'dbname='.$dbname
                            ,$user
                            ,$password);
        echo "Connected ! <br>";
    }

}



ตัวที่เกิดปัญหา

Code (PHP)
$query = "SELECT ID FROM Users WHERE 
                    Login = :login And Password = :password ";
        $sth = $this->database->prepare($query); 
        $sth->execute(array(
           ':login' => $_POST['login']
          ,':password' => md5($_POST['password'])
        ));
        
        $data = $sth->fetchAll();
        print_r($data);
        $count = $sth->rowCount();
        echo "<br />";
        print_r($count);



ผลลัพธ์ครับ

ฟ


รบกวนผู้รู้ช่วยให้คำแนพนำด้วยนะครับ ขอบคุณครับ



Tag : PHP, Ms SQL Server 2012, HTML/CSS, Windows







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-08-31 19:56:41 By : INTz View : 2350 Reply : 6
 

 

No. 1



โพสกระทู้ ( 4,706 )
บทความ ( 8 )



สถานะออฟไลน์


ใช้ class db ตัวไหนครับ?
คำสั่งนับน่าจะทำงานผิดมั้งนะ ถ้าค่า fetchall ออกมาเป็นแบบนี้ใช้ count() ธรรมดาตรง fetchall ก็ได้นะครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-31 20:39:26 By : mr.v
 


 

No. 2



โพสกระทู้ ( 178 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.v เมื่อวันที่ 2014-08-31 20:39:26
รายละเอียดของการตอบ ::


ใช้ของ PDO อะครับ

class sdb mssql ครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-31 21:17:34 By : INTz
 

 

No. 3

Guest


PDOStatement::rowCount() ไม่ได้บอกจำนวนของแถวจากการ SELECT ครับ
แต่เป็นจำนวนของแถวที่ "affected" ด้วย DELETE, INSERT หรือ UPDATE ครับ
PDOStatement::rowCount() จะบอกว่า UPDATE ไปกี่แถว หรือ DELETE ไปกี่แถว

ถ้าต้องการจำนวนแถวที่ SELECT ได้ แบบง่ายๆ ก็ fetchAll() มาก่อนแล้วใช้ count()


Code (PHP)
$data = $sth->fetchAll();
echo count($data);


แต่มันเป็นวิธีที่ไม่ค่อยดีหากข้อมูลที่ SELECT ได้มีจำนวนแถวเยอะ จะเปลือง RAM มาก
ทางที่ดีควรทำการ SELECT COUNT(*) ก่อน แล้วอ่านค่าที่ได้มา
แต่จากโค้ดของคุณ ดูเหมือนจะเป็นการตรวจว่ามีผู้ใช้อยู่หรือไม่
ซึ่งปกติจะมีแค่แถวเดียวที่ตรงเงื่อนไข ดังนั้นไม่จำเป็นต้อง count() ก็ได้ครับ
แค่ SELECT แล้ว fetch() ออกมา ถ้ามันไม่ใช่ null หรือ false ก็หมายความว่า SELECT เจอ


Code (PHP)
$query = "SELECT * FROM Users WHERE 
Login = :login And Password = :password ";
$sth = $this->database->prepare($query); 
$sth->execute(array(
   ':login' => $_POST['login']
  ,':password' => md5($_POST['password'])
));

$user = $sth->fetch();
if ($user) {
    // User found
} else {
    // User not found or wrong password
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-09-01 08:45:19 By : FRINGE
 


 

No. 4



โพสกระทู้ ( 332 )
บทความ ( 0 )



สถานะออฟไลน์


count




ถ่าแปลเป็น php ต้องเขียน code อย่างไรครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-06-16 09:37:41 By : โต้ง
 


 
ตอบความคิดเห็นที่ : 4 เขียนโดย : โต้ง เมื่อวันที่ 2022-06-16 09:37:41
รายละเอียดของการตอบ ::
Vue.js เป็น client-side จากภาพเป็นการ bind event
https://vuejs.org/guide/essentials/application.html

ไม่มีวิธีแปลงเป็น PHP โดยตรง(ถ้าไม่ใช้ session) ซึ่งเป็น server-side script
ต้องใช้ร่วมกับ pure JS หรือ JS framwork เช่น jQuery, React, Angular, Next,... etc.



pure JS
https://codepen.io/juliogcampos/pen/BzdjwY
หรือ localStorage ก็ได้

React
https://codepen.io/trnkat96/pen/KqPOoX

Angular
https://codepen.io/NickCelaya/pen/qXjPbB

ถ้าอยากทำ PHP จริงๆ
PHP (post + session)
https://stackoverflow.com/a/25306218

PHP (AJAX)
http://fofwebdesign.co.uk/template/_testing/click-count/




คำค้น click counter

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-06-16 13:33:48 By : 009
 


 

No. 6



โพสกระทู้ ( 4,706 )
บทความ ( 8 )



สถานะออฟไลน์


Code (SQL)
-- phpMyAdmin SQL Dump
-- version 5.1.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: Jun 16, 2022 at 06:45 PM
-- Server version: 10.6.7-MariaDB
-- PHP Version: 8.1.6

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";

--
-- Database: `test_generic-tests`
--

-- --------------------------------------------------------

--
-- Table structure for table `dummy_people`
--

CREATE TABLE `dummy_people` (
  `id` int(11) NOT NULL,
  `name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `address` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `test_double` double(20,9) NOT NULL,
  `add` date DEFAULT NULL,
  `update` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `dummy_people`
--

INSERT INTO `dummy_people` (`id`, `name`, `address`, `test_double`, `add`, `update`) VALUES
(1, 'Madyson Cummerata', '332 Jast Knoll\nEast Carolanne, WA 70869-1568', 12.458100000, '1981-03-06', '2020-12-30'),
(2, 'Mrs. Kathlyn Olson', '', 0.000000000, '2000-12-16', '2005-09-06'),
(3, 'Freeda Hodkiewicz', '23132 Kovacek Alley Apt. 060\nHowellfort, NJ 47945', 0.000000000, '1996-02-12', '2006-01-07'),
(4, 'Shanny Weissnat', '63976 Huels Inlet\nSouth Noemiehaven, CA 60696-8648', 0.000000000, '2009-10-01', '2017-06-10'),
(5, 'Demarcus Huels', '627 Reynolds Plain\nNorth Nicoport, MD 72711-7777', 0.000000000, '1977-11-04', '1998-10-18');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `dummy_people`
--
ALTER TABLE `dummy_people`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `dummy_people`
--
ALTER TABLE `dummy_people`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=122;
COMMIT;






Code (PHP)
$dsn = 'mysql:dbname=test_generic-tests;host=127.0.0.1';
$user = 'user';
$password = 'pass';

$options = [
    \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_OBJ
];

$dbh = new PDO($dsn, $user, $password);


$sql = 'SELECT `id` FROM `dummy_people` WHERE `id` = :id';
$Sth = $dbh->prepare($sql);
//$Sth->bindValue(':id', 2, \PDO::PARAM_INT);
$Sth->execute([':id' => 2]);

$result = $Sth->fetchAll();
$count = $Sth->rowCount();

var_dump($result);
echo '<br>';
var_dump($count);

$Sth->closeCursor();
unset($Sth, $dbh);






Quote:
array (size=1)
0 =>
array (size=2)
'id' => int 2
0 => int 2

int 1






https://www.php.net/manual/en/pdostatement.rowcount.php
Quote:
returns the number of rows affected by the last DELETE, INSERT, or UPDATE statement executed by the corresponding PDOStatement object.

If the last SQL statement executed by the associated PDOStatement was a SELECT statement, some databases may return the number of rows returned by that statement. However, this behaviour is not guaranteed for all databases and should not be relied on for portable applications.

หมายความว่า rowCount() จะแสดงจำนวนในฐานข้อมูลที่ query ได้ ผ่านคำสั่ง SELECT เฉพาะฐานข้อมูลบางประเภทเท่านั้น เช่น จากที่ทดลองก็มี MySQL ตัวเดียว. นอกนั้นใช้ไม่ได้


ประวัติการแก้ไข
2022-06-16 18:20:38
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2022-06-16 18:19:56 By : mr.v
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : เกิดอะไรขึ้นเมื่อ Fetch Array ออกมาได้ แต่.. Count นับเป็น 0
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่