gpt4 book ai didi

mysql - 将用户输入与数据库中的用户名进行比较

转载 作者:行者123 更新时间:2023-11-29 16:06:46 25 4
gpt4 key购买 nike

我在将用户输入与已使用用户名的数据库进行比较时遇到问题。数据库完全按照预期工作,但看似简单的任务事实证明比我想象的要困难。我想我错过了一些非常简单的东西!我从代码中没有收到任何错误代码,但当用户名实际上在数据库中时,它不会打印“用户名已被占用”。

到目前为止,我已尝试使用 for 循环来比较用户的输入与数据库,我已尝试在数据库中创建用户名列表并迭代该列表以比较用户输入:

### check to see if the user is already in the database

import mysql.connector

# Database entry
mydb = mysql.connector.connect(
host='Localhost',
port='3306',
user='root',
passwd='passwd',#changed for help
database='pylogin'
)

searchdb = 'SELECT username FROM userpass'
mycursor = mydb.cursor()
mycursor.execute(searchdb)
username = mycursor.fetchall()
print(username)
user = input('username')
for i in username:
if user == username:
print('username is taken')
else:
print("did not work")

输出不起作用:

[('Nate',), ('test',), ('test1',), ('test2',), ('n',), ('test4',)] username: n
('Nate',)
('test',)
('test1',)
('test2',)
('n',)
('test4',)

我希望上面的代码能够遍历每个数据库条目并将其与用户的输入进行比较,以验证用户名是否尚未被使用。它应该打印“用户名已被占用”,而不是打印“不起作用”。

最佳答案

欢迎来到 Stack Overflow Nate!

您可以使用:

mycursor.execute("SELECT * FROM userpass WHERE username = ?", [(user)])
results = cursor.fetchall()

创建一个名为“results”的变量,用于存储 userpass 数据库表中记录的所有 (*) 列值,其中记录的用户名等于用户变量的值。

然后您可以使用 if 语句:

if results:

如果结果变量有值(如果有一条记录的用户名等于表中用户变量的值),则运行该值,或者如果用户名被采用。

这个 if 语句可以在运行时打印“用户名已被占用”

完整代码:

import mysql.connector

# Database entry
mydb = mysql.connector.connect(
host='Localhost',
port='3306',
user='root',
passwd='passwd',#changed for help
database='pylogin'
)

user = input('username')
mycursor.execute("SELECT * FROM userpass WHERE username = ?", [(user)])
results = cursor.fetchall()

if results:
print('username is taken')
else:
print("did not work")

关于mysql - 将用户输入与数据库中的用户名进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55672060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com