我对以下代码有两个问题。
if ($query->num_rows == 1) {
的数据库中的行数不起作用,以及如何rowcount
代码如下。第一个代码:
$query = $db->prepare("SELECT * from users WHERE username = :username");
$query->execute(array(':username'=>$un));
第二
$result = "SELECT * from users WHERE username = :username";
$query = $db->prepare( $result );
$stmt->bindValue(':username'=>$un);
$query->execute($stmt);
答案 0 :(得分:2)
您不需要行数。你只需要行本身。所以,只需获取它,从第一个变体,这是好的。
从行数开始,您应该能够从手册中获取正确的函数名称。
$query = $db->prepare("SELECT 1 from users WHERE username = ?");
$query->execute(array($un));
if ($query->fetch())
{
// found
}
答案 1 :(得分:1)
首先,如果您想确保只选择一个用户名,可以在MySQL语句中使用LIMIT
SELECT * from users WHERE username = :username ORDER BY id DESC LIMIT 1
或者:
SELECT DISTINCT(username) from users WHERE username = :username```
更好的是,在创建表格时,您可以要求用户名是唯一的:
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
username VARCHAR(255) NOT NULL,
...
PRIMARY KEY (id),
);
其次,要验证是否实际从dabase检索了一行,您可以使用fetch:
$query = $db->prepare("SELECT * from users WHERE username = :username");
$query->execute(array(':username'=>$un));
$rows = $query->fetch(PDO::FETCH_NUM);
if($rows[0]) {
// Row exists
}