SQLite 和 PHP 注册系统不工作
SQLite and PHP register system not working
这是我使用 PHP 和 SQLite 的注册码。当肯定不会时,它会继续转到语句 "user already exists"。我检查数据库中的用户名是否大于 1(如果存在),但事实并非如此,但如果我回显计数,它总是说它等于 1...
$checkUser = $db->prepare('
SELECT COUNT(*)
FROM users
WHERE
user = ?
');
$checkUser->setFetchMode(PDO::FETCH_ASSOC);
$checkUser->execute(array($user));
$numrows = count($checkUser);
if ($numrows == 0) {
try {
$reg = $db->prepare("
INSERT
INTO users
(user, pass, email)
VALUES
('$user', '$pass', '$email')
");
$reg->setFetchMode(PDO::FETCH_ASSOC);
$reg->execute();
} catch (PDOException $e) {
print_r($e->getMessage());
}
echo ('success...');
}
else {
die ('user already exists');
}
我不使用 SQLite,但您的 $numrows
看起来只是在检查执行是否确实 运行 成功 (boolean true/false
)。尝试更新此位:
// I like to name "count" otherwise returned as "COUNT(*)" in the array key
$checkUser = $db->prepare('
SELECT COUNT(*) as count
FROM users
WHERE
user = ?
');
// Execute with bind
$checkUser->execute(array($user));
// Fetch an associative array
$result = $checkUser->fetch(PDO::FETCH_ASSOC);
// The count will be here as a numeric
if ($result['count'] == 0) {
这是我使用 PHP 和 SQLite 的注册码。当肯定不会时,它会继续转到语句 "user already exists"。我检查数据库中的用户名是否大于 1(如果存在),但事实并非如此,但如果我回显计数,它总是说它等于 1...
$checkUser = $db->prepare('
SELECT COUNT(*)
FROM users
WHERE
user = ?
');
$checkUser->setFetchMode(PDO::FETCH_ASSOC);
$checkUser->execute(array($user));
$numrows = count($checkUser);
if ($numrows == 0) {
try {
$reg = $db->prepare("
INSERT
INTO users
(user, pass, email)
VALUES
('$user', '$pass', '$email')
");
$reg->setFetchMode(PDO::FETCH_ASSOC);
$reg->execute();
} catch (PDOException $e) {
print_r($e->getMessage());
}
echo ('success...');
}
else {
die ('user already exists');
}
我不使用 SQLite,但您的 $numrows
看起来只是在检查执行是否确实 运行 成功 (boolean true/false
)。尝试更新此位:
// I like to name "count" otherwise returned as "COUNT(*)" in the array key
$checkUser = $db->prepare('
SELECT COUNT(*) as count
FROM users
WHERE
user = ?
');
// Execute with bind
$checkUser->execute(array($user));
// Fetch an associative array
$result = $checkUser->fetch(PDO::FETCH_ASSOC);
// The count will be here as a numeric
if ($result['count'] == 0) {