Php 在我使用过一次准备好的语句后,不使用它安全吗?

Php 在我使用过一次准备好的语句后,不使用它安全吗?,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,我正在做一个登录系统,需要检查用户的有效性。基本上,它需要三个步骤 从用户输入获取$username 检查数据库中是否存在$username SELECT * FROM members WHERE name = $username LIMIT 1 更新$username的登录信息(例如登录时间、IP等) 在第二步中,假设我使用prepared语句查询(MySQL)数据库,以避免SQL注入。我想知道在第三步中是否仍然需要使用事先准备好的语句 我的逻辑是,$username已经通过了第二步,因

我正在做一个登录系统,需要检查用户的有效性。基本上,它需要三个步骤

  • 从用户输入获取
    $username

  • 检查数据库中是否存在
    $username

    SELECT * FROM members WHERE name = $username LIMIT 1
    
  • 更新
    $username
    的登录信息(例如登录时间、IP等)

  • 在第二步中,假设我使用prepared语句查询(MySQL)数据库,以避免SQL注入。我想知道在第三步中是否仍然需要使用事先准备好的语句

    我的逻辑是,
    $username
    已经通过了第二步,因此它应该是一个有效的参数。为了节省由于使用prepared语句而导致的额外服务器往返,似乎没有必要在第三步中使用prepared语句更新数据库


    我对使用数据库很陌生。希望有人能澄清我的问题。:)

    不!始终使用事先准备好的语句。您可以通过10次验证,但在第11次中删除您的数据库

    否!始终使用事先准备好的语句。您可以通过10次验证,但在第11次中删除您的数据库

    否!始终使用事先准备好的语句。您可以通过10次验证,但在第11次中删除您的数据库

    否!始终使用事先准备好的语句。您可以通过10次验证,但在第11次验证中删除数据库。如果用户名中有特殊字符,则会影响第二次查询。这被称为。

    如果用户名中有特殊字符,它将影响您的第二次查询。这被称为。

    如果用户名中有特殊字符,它将影响您的第二次查询。这被称为。

    如果用户名中有特殊字符,它将影响您的第二次查询。这被称为。

    如果$username在第一行是邪恶的东西,它将在第二行


    除非您使用从数据库读取的值覆盖它。

    如果$username在第一行中是一个邪恶的东西,它将在第二行中


    除非您使用从数据库读取的值覆盖它。

    如果$username在第一行中是一个邪恶的东西,它将在第二行中


    除非您使用从数据库读取的值覆盖它。

    如果$username在第一行中是一个邪恶的东西,它将在第二行中



    除非您使用从数据库读取的值覆盖它。

    用户名是否可以具有像“,”这样的值?假设用户名可以包含任何字符是否可以具有像“,”这样的值?假设用户名可以包含任何字符是否可以具有像“,”这样的值,“?假设用户名可以包含任何字符该用户名的值可以像“,”这样吗?假设用户名可以包含任何字符我不明白邪恶的$username如何能为“选择”返回一些东西。”“语句?它可以处理您的数据,您可以做什么,也许可以删除一些表。要搜索的关键字是SQL注入。我不明白邪恶的$username如何为“SELECT”语句返回一些信息?它可以处理您的数据,您可以做什么,也许可以删除一些表。要搜索的关键字是SQL注入。我不明白邪恶的$username如何为“SELECT”语句返回一些信息?它可以处理您的数据,您可以做什么,也许可以删除一些表。要搜索的关键字是SQL注入。我不明白邪恶的$username如何为“SELECT”语句返回一些信息?它可以处理您的数据,您可以做什么,也许可以删除一些表。要搜索的关键字是SQL注入。它不是那样工作的。您并不总是需要使用预先准备好的语句,预先准备好的语句也不是万能的。它们是你需要知道如何正确使用的工具。仅此而已。当您从代码外部获取参数时,应始终使用正确的准备语句。实际上,无论何时获取参数,甚至从代码内部,都应该使用准备好的语句。但并不是所有的查询都适用于准备好的语句,它并不是这样工作的。您并不总是需要使用预先准备好的语句,预先准备好的语句也不是万能的。它们是你需要知道如何正确使用的工具。仅此而已。当您从代码外部获取参数时,应始终使用正确的准备语句。实际上,无论何时获取参数,甚至从代码内部,都应该使用准备好的语句。但并不是所有的查询都适用于准备好的语句,它并不是这样工作的。您并不总是需要使用预先准备好的语句,预先准备好的语句也不是万能的。它们是你需要知道如何正确使用的工具。仅此而已。当您从代码外部获取参数时,应始终使用正确的准备语句。实际上,无论何时获取参数,甚至从代码内部,都应该使用准备好的语句。但并不是所有的查询都适用于准备好的语句,它并不是这样工作的。您并不总是需要使用预先准备好的语句,预先准备好的语句也不是万能的。它们是你需要知道如何正确使用的工具。仅此而已。当您从代码外部获取参数时,应始终使用正确的准备语句。实际上,无论何时获取参数,甚至从代码内部,都应该使用准备好的语句。但并非所有查询都适用于准备好的语句。
    UPDATE members SET ip = $ip WHERE name = $username