【问题标题】:I dont know how to search for a matching row with pdo [duplicate]我不知道如何使用 pdo 搜索匹配的行 [重复]
【发布时间】:2014-01-24 23:53:49
【问题描述】:

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

$conn = new PDO("mysql:host=localhost;dbname=users;","root","");

这是无效的确认码:(

                $sql = 'SELECT username FROM users ORDER BY username';
            foreach ($con->query($sql) as $row) {
                if($username1 !== $row['username']) {
                    $acceptCounter++;
                    $username = $_GET['username'];
                }
            }

请帮帮我:)

【问题讨论】:

  • 您尝试阅读手册了吗?它有一些非常简单的例子来满足你的需要:php.net/manual/en/book.pdo.php
  • 首先,在表格的username列上定义一个UNIQUE,防止if发生。然后,您可以选择尝试 INSERT 并捕获异常,或者使用 WHERE username='desired username' 进行查询(使用准备好的语句),如果有 0 行,您就可以开始了。

标签: php mysql database pdo


【解决方案1】:

我有几个建议给你。

  1. 首先,在users 表中添加唯一索引,如下所示:
    ALTER TABLE users ADD UNIQUE(username)
    之后你就不用担心名字重复了:mySQL 会抛出错误(但请小心并正确处理错误)。
  2. 按照评论中的建议使用WHERE 子句。因此,您无需遍历大量行来查找单行。
  3. 使用参数化查询和准备好的语句。当您使用 PDO(我相信这是您可以使用 PHP 和 MySQL 做的最好的事情之一)时,这应该不是一件难事。因此,您将免受(大多数)SQL 注入的影响。
  4. 使用PDO->fetch()PDO->fetchAll()。循环查询是一件非常糟糕的事情,因为这会减慢整个网站的速度。

【讨论】:

    猜你喜欢
    • 2014-11-22
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 2012-12-02
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多