Php 是否可以将bindParam设置为会话变量?

Php 是否可以将bindParam设置为会话变量?,php,Php,我想要实现的是,当用户登录时,用户id保存为会话值,并且当登录用户选择日期时,产品将基于选择的日期显示,该日期仅显示来自该客户 要确认以下两个问题: 1,如何在会话中保存用户id?2,如何使用bindParam sessionid 以下是我的代码: When user logs in: $_SESSION['customer_loggedin'] = $row['id']; THIS DOES NOT DISPLAY THE ID ON ROW? 当用户选择日期时,Ajax将发送到:

我想要实现的是,当用户登录时,用户id保存为会话值,并且当登录用户选择日期时,产品将基于选择的日期显示,该日期仅显示来自该客户

要确认以下两个问题: 1,如何在会话中保存用户id?2,如何使用bindParam sessionid

以下是我的代码:

When user logs in:
    $_SESSION['customer_loggedin'] = $row['id']; 
THIS DOES NOT DISPLAY THE ID ON ROW?
当用户选择日期时,Ajax将发送到:

session_start();
    include('db_config.php');
    $datepicker = $_POST['dateorderpicker'];

    $sql = "SELECT * FROM orders WHERE deliveryDate = ? AND cusomerId= ?"; 
    $stmt = $conn->prepare($sql);
    $stmt->bindParam(1, $datepicker, PDO::PARAM_STR);

    // HOW DO I BIND PARAM THE SESSION ID?

    $stmt->execute();
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
    {   
        ?>
            <div class="col-sm-4 col-md-4">
                <div class="content-boxes style-two top-column clearfix animated flipInY" style="opacity: 1;">
                <div class="content-boxes-text">
                    <h4><?php echo $row['itemName']; ?></h4>
                <img src="../wholesale/img/sourdough.jpg" class="img-reponsive">
                <p>Our best seller.  Full of flavour.</p>
                <form class="form-inline pull-right">
                <div class="form-group">
                <label class="sr-only" for="exampleInputAmount">Qty</label>
                <div class="input-group">
                <input type="number" class="form-control" id="exampleInputAmount" placeholder="<?php echo $row['qty']; ?>">
                </div>
                </div>
                <button type="submit" class="btn btn-primary">Update</button>
                </form>
                </div>
               </div>
              </div>
        <?php
    }
如何在会话中保存用户id

您只需启动会话并将其设置为与任何其他变量一样,就像问题中的变量一样。只需在其前面添加
session\u start()

session_start();
$_SESSION['customer_loggedin'] = $row['id'];
如何创建bindParam sessionid

同样,这就像绑定任何其他参数一样。调用
session\u start()
后,所有先前设置的会话变量都将放入
$\u session
数组中

$stmt->bindParam(2, $_SESSION['customer_loggedin'], PDO::PARAM_INT);

将会话变量分配到一个变量中并绑定它:-

 $row_id=$_SESSION['customer_loggedin'];
 $sql = "SELECT * FROM orders WHERE deliveryDate = ? AND cusomerId= ?"; 
 $stmt = $conn->prepare($sql);
 $stmt->bindParam(1, $datepicker, PDO::PARAM_STR);

 $sth->bindValue(2, $row_id, PDO::PARAM_STR);
 $stmt->execute();

您在页面中从何处开始会话?我有session_start();在这两个页面上,我都认为我应该这样做,但是当我回显会话值时,它显示为1。会话值应为4,如表中所示。我将添加我的实际登录脚本,因为这可能是当时的问题。会话数组将具有不同值的唯一方法是,如果您以某种方式将其设置在其他位置。。。或者,如果它实际上不是
1
,但您正在进行类型转换,例如,将字符串转换为整数。现在的问题是,在我将您的脚本添加到我的脚本后,我无法启动会话或登录。我正在使用fetchColumn我不知道这是否是问题所在?当使用
fetchColumn
时,您应该在查询中选择该列,而不是
SELECT*
。事实上,除非您要实际使用所有列,否则最好明确地说出您在查询中选择的列。它避免了混淆,也降低了内存使用率。
$row['id']
实际上等于什么?如果它等于1而不是4,那就是你的问题。
 $row_id=$_SESSION['customer_loggedin'];
 $sql = "SELECT * FROM orders WHERE deliveryDate = ? AND cusomerId= ?"; 
 $stmt = $conn->prepare($sql);
 $stmt->bindParam(1, $datepicker, PDO::PARAM_STR);

 $sth->bindValue(2, $row_id, PDO::PARAM_STR);
 $stmt->execute();