gan*_*jan 1 php mysql oop jquery pdo
我刚刚更改了数据库连接.我还不习惯PDO类或OOP.无论如何,我像这样连接到数据库:
$dsn = "mysql:host=" . DB_HOST . ";dbname=" . DB_NAME;
try
{
$this->db = new PDO($dsn, DB_USER, DB_PASS);
}
catch ( Exception $e )
{
die ( $e->getMessage() );
}
Run Code Online (Sandbox Code Playgroud)
我试图从此查询中获取行数:
$ip = $this->ip();
$sql = "SELECT `id` FROM `login_failed`
WHERE `ip` = :ip AND `time` BETWEEN NOW( ) - INTERVAL 120 MINUTE AND NOW( )
LIMIT 3";
try
{
$stmt = $this->db->prepare($sql);
$stmt->bindParam(':ip', $ip, PDO::PARAM_STR);
$result = $stmt->execute(); // $result = true
$n = $stmt->num_rows ; // n = NULL?
$stmt->closeCursor();
}
catch (Exception $e)
{
die ($e->getMessage() );
}
Run Code Online (Sandbox Code Playgroud)
在phpmyadmin
我得到的结果,所以我的查询是正确的,但$n
就是NULL
因为某些原因..我如何获得的行数与PDO
Jon*_*Jon 12
$stmt
是类型的PDOStatement
.那堂课没有num_rows
财产.
您可能正在寻找rowCount
,但该文档的说明:
如果关联的PDOStatement执行的最后一个SQL语句是SELECT语句,则某些数据库可能会返回该语句返回的行数.但是,并不保证所有数据库都有这种行为,不应依赖于便携式应用程序.
如果你想要实际上SELECT
所有那些数据,你可以通过迭代结果集来确定返回的行fetchAll
数(或者只是调用和计算数组中的项目).如果您不需要数据而只需要数字,请SELECT COUNT
改用.
因此,要在不更改查询的情况下计算行数:
$result = $stmt->execute();
$rows = $stmt->fetchAll(); // assuming $result == true
$n = count($rows);
Run Code Online (Sandbox Code Playgroud)