我的问题是,当您只想从 MySQL 数据库行中检索一个值时,您认为最好使用哪种解决方案。
例如,假设我们有以下内容:
-table "users"
包含三行 "username","password"和 "status"
以及三个用户 "user1","user2"和 "user3".
如果我只想选择一个用户的状态(假设是 user1)并将其设置为变量,我将使用:
$user_status = mysql_result(mysql_query("SELECT status FROM users WHERE username='user1'"),0);
我在网上搜索,发现人们使用不同的方法来检索此类信息,例如在选择代码中设置 LIMIT 1 或检索整个用户列表,然后对符合他们需求的列表进行排序。
我想知道我的解决方案是否是最好、最安全的方法(包括 SQL 注入(inject)的安全性,请记住 php 代码中没有使用 $_GET
方法)。
也许可以同时使用LIMIT 1
和我上面使用的方法(代码需要更少的资源和时间来执行)?
最佳答案
从数据库的角度来看,最安全的方法是在您选择的表中拥有一个唯一键,并通过该键检索行。在您的示例中,您可以有一个 userID 列,其中包含每个用户的唯一 ID。如果您查询 WHERE userID='...'
,数据库将保证只有一个结果行。
编辑:“舆论”建议我添加两件事。
- 你不应该使用mysql_*!为什么不使用 mysqli ?您不必担心its performance .
- 如果您使用正确的数据库设计,则没有理由使用
LIMIT 1
- 根本没有理由。这有点像编写Enter car 的代码;确保您输入的是一辆车;
。LIMIT
可用于其他情况,例如检索许多结果中的前 10 个结果。
关于php - 在 PHP 中使用 SELECT 仅显示单行中的一个值的最安全、最正确的解决方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21406020/