Php 是否可以将bindParam设置为会话变量?
我想要实现的是,当用户登录时,用户id保存为会话值,并且当登录用户选择日期时,产品将基于选择的日期显示,该日期仅显示来自该客户 要确认以下两个问题: 1,如何在会话中保存用户id?2,如何使用bindParam sessionid 以下是我的代码: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将发送到:
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();