Php 我不知道如何搜索与pdo匹配的行

Php 我不知道如何搜索与pdo匹配的行,php,mysql,database,pdo,Php,Mysql,Database,Pdo,我在pdo和php方面遇到了麻烦,因为我是一个php高手,知道的不多。我正在尝试连接到一个数据库(我这样做了),然后在查询(或其他)中搜索匹配的字符串。基本上,用户无法使用相同的用户名创建帐户。这是连接代码 $conn = new PDO("mysql:host=localhost;dbname=users;","root",""); 这是不起作用的确认码:( 请帮帮我:)我有几点建议给你 首先,向users表中添加一个唯一的索引,如下所示: ALTER TABLE用户添加唯一(用户名) 在此

我在pdo和php方面遇到了麻烦,因为我是一个php高手,知道的不多。我正在尝试连接到一个数据库(我这样做了),然后在查询(或其他)中搜索匹配的字符串。基本上,用户无法使用相同的用户名创建帐户。这是连接代码

$conn = new PDO("mysql:host=localhost;dbname=users;","root","");
这是不起作用的确认码:(


请帮帮我:)

我有几点建议给你

  • 首先,向
    users
    表中添加一个唯一的索引,如下所示:
    ALTER TABLE用户添加唯一(用户名)

    在此之后,您将不需要担心名称重复:mySQL将抛出一个错误(但请小心并正确处理错误)
  • 使用注释中建议的
    WHERE
    子句。因此,您不需要在大量行中循环找到一行
  • 使用参数化查询和准备好的语句。当您使用PDO时(我相信,这是使用PHP和MySQL可以做的最好的事情之一),这应该不是一件困难的事情。因此,您将不会受到(大多数)SQL注入的影响
  • 使用
    PDO->fetch()
    PDO->fetchAll()
    。循环查询是一件非常糟糕的事情,因为这会减慢整个网站的速度

  • 你试过阅读手册吗?它提供了一些非常简单的例子来说明您需要什么:首先,在表中的
    username
    列上定义一个
    UNIQUE
    ,以防止if发生。然后,您可以选择尝试
    插入
    ,只捕获一个异常,或者使用
    WHERE username='desired username'
    (使用准备好的语句)执行查询,如果该语句有0行,则可以继续。
                    $sql = 'SELECT username FROM users ORDER BY username';
                foreach ($con->query($sql) as $row) {
                    if($username1 !== $row['username']) {
                        $acceptCounter++;
                        $username = $_GET['username'];
                    }
                }