【问题标题】:big sql query - best practice大 sql 查询 - 最佳实践
【发布时间】:2013-01-06 15:08:34
【问题描述】:

我的 php 脚本将用户 ID 列表保存在 SESSION ARRAY 变量中,以便在该页面上创建 html 链接。

当我们单击该 html 链接时,另一个 PHP 脚本应在 html 表中显示该用户 ID 的所有用户信息。

我需要你知道为此创建SELECT 查询的最佳实践

1) SELECT * from `users` WHERE  
`user_id` = '$array_valuer1' OR 
`user_id` = '$array_valuer2' OR 
`user_id` = '$array_valuer3' OR 
`user_id` = '$array_valuer4' OR 
`user_id` = '$array_valuer5' OR 
`user_id` = '$array_valuer6' OR 
----
----
`user_id` = '$array_valuern';

2) select all user --> SELECT * from `users`
   then using php script display only the userid in the SESSION array and skip other userid

最佳做法是什么? SESSION 数组是临时的,我不想保存在数据库中。

谢谢

【问题讨论】:

  • 你在尝试什么?你到底想要什么?

标签: php mysql session


【解决方案1】:

如果您在会话中存储的用户 ID 很少,那也没关系。但如果数量很大,请不要将它们存储在 SESSION 中。最好使用查询来获取它们。

关于查询,您可以使用以下表格。

$q = "SELECT * from `users` WHERE `user_id` IN ('".implode("','", $array)."')";

【讨论】:

  • 感谢大家的回复。我可以在这里使用的最大用户 ID 是多少?
  • 最大用户ID数?只是不要将它们存储在会话中。从数据库中获取它们。您必须知道它们存在于用户会话中的标准,对吗?使用该标准从数据库加载它。如果您将会话保存在数据库中,它将从数据库中获取。所以它是一样的。
【解决方案2】:

shiplu.mokadd.im 答案很好,但使用 PDO 更好:

$db = new PDO("...");
$statement = $db->prepare("SELECT * from `users` WHERE `user_id` IN (':list')");
$statement->execute(array(':list' => implode("','", $array)));
$row = $statement->fetch();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    相关资源
    最近更新 更多