【问题标题】:PHP Session Array - Query DatabasePHP 会话数组 - 查询数据库
【发布时间】:2013-01-16 13:00:50
【问题描述】:

这是对上一个问题的后续。

我的主页上有 4 个按钮,每个按钮都有自己的 ID。当有人单击按钮时,Jquery 会获取按钮 ID 并通过 Ajax 将其发送到 PHP,然后将其添加为会话变量。如果人们单击多个按钮,它将发送每个按钮的 ID。 所以最后我有可能在数组中有 4 个变量。

Session 被创建为一个数组,以便它可以保存多个 ID: 像这样:

 <?php
    session_start();

    if ( ! is_array( $_SESSION['ids'] ) ) {
       $_SESSION['ids'] = array();
    }

    if ( ! in_array($_POST['session'], $_SESSION['ids'] ) ) {
       $_SESSION['ids'][] = $_POST['session'];
    }
 ?>

一切正常,如果我 print_r $_SESSION['ids'] 它正确显示了每个被点击和存储的按钮的 ID,例如:

[0] => 1, null, [1] => 3, null, [2] => 4

(其中存储的按钮 ID 是 1、3 和 4。

现在的问题是我需要在数据库中查询已存储的按钮 ID。

如何分解数组并仅获取值,例如:按钮 ID 1, 34。 这样我就可以用它们查询数据库了?

【问题讨论】:

  • 可以使用 for 循环遍历按钮会话数组。您面临的问题是什么?

标签: php database arrays session


【解决方案1】:

您可以使用implode() 函数,描述here

$in = implode(',',$_SESSION['ids']);
mysql_query("SELECT * from yourbd where id in ($in)");//just an eg. mysql_* is deprecated

【讨论】:

    【解决方案2】:

    查看this 函数。祝你好运!

    【讨论】:

      【解决方案3】:

      改变数组

        foreach ($IdsArray as $myId) {
          $newIds[] = 'my_id = ' . $myId;
        }
        $orSeparatedIds = implode(" OR ", $newIds);
      

      在查询中使用

      $query = "select my_id from mytable where $orSeparatedIds";
      

      【讨论】:

        【解决方案4】:
        $buttons=$_SESSION['ids'];
        $str=implode(', ',$buttons);
        $sqlquery = mysql_query("Select * from table where btn_id IN ($str)");      
        

        【讨论】:

        • 问题在于它将 ID 作为单个数字返回:例如:获取 ID 1 和 3,但将它们放置为 13。
        • @JPDP 好的。能否请您打印数组 $_SESSION['ids'] 并将其粘贴到此处
        • Print_r = Array ( [0] => [1] => 1 [2] => 3 ) 和 echo: 13
        • @JPDP 对不起,我还是不明白。你的意思是如果你在我的回答中使用代码,你会得到 13?
        • 没错,所以您的代码正在获取存储在会话中的 2 个 ID(在本例中,它们是 ID 1 和 ID 3。所以输出为 13。当我尝试查询数据库时对于 $btn 它认为我的意思是 13 而不是 1,3
        猜你喜欢
        • 1970-01-01
        • 2012-12-19
        • 2018-08-04
        • 2010-11-11
        • 1970-01-01
        • 2018-10-05
        • 2017-08-01
        • 2012-11-22
        • 1970-01-01
        相关资源
        最近更新 更多