小编use*_*136的帖子

如何传递PDO参数数组但仍指定其类型?

$sql = "SELECT * FROM table WHERE id LIKE CONCAT('%', :id, '%')
LIMIT :limit1, :limit2";
Run Code Online (Sandbox Code Playgroud)

我想仍然像这样使用数组输入:

$stmt->execute($array);
Run Code Online (Sandbox Code Playgroud)

否则我不能重复使用相同的方法来执行我的查询.

同时,:limit1和:limit2不起作用,除非它像这样输入:

$stmt->bindParam(':limit1', $limit1, PDO::PARAM_INT);
Run Code Online (Sandbox Code Playgroud)

我试图做两个但它不使用bindParams执行:

$stmt->bindParam(':limit2', $limit2, PDO::PARAM_INT);
$stmt->execute($array);
Run Code Online (Sandbox Code Playgroud)

它的方法是什么?

我以为我可以扩展PDOStatement并添加一个新方法"bindLimit"或其他东西,但我无法弄清楚PDO使用什么内部方法将参数绑定到变量.

php mysql pdo

18
推荐指数
2
解决办法
1万
查看次数

浏览器在PHP关闭后如何保持会话打开?

我从这里听到了答案,但它对我不起作用:
即使在浏览器关闭后仍可以保持会话吗?

这是我试过的代码:

$session_life = 2592000; // 30 days
session_set_cookie_params($session_life);
session_name('my_cart');
session_start();
// update the session_life
setcookie(session_name(),session_id(),time()+$session_life);
Run Code Online (Sandbox Code Playgroud)

这个问题是,每次浏览器关闭时,我仍然会得到一个新的session_id,而不是旧的.

我使用数据库将项目存储在'my_cart'中,而session_id仅用于识别用户以向他们展示自己的购物车.

让我的用户购物车保持30天的最佳方式是什么?


这是我最终得到的代码:

$cart_name = "my_cart";
$cart_life = 2592000; // 30 days
session_start();
if (isset($_COOKIE[$cart_name])) {
    session_id($_COOKIE[$cart_name]);
}
setcookie($cart_name, session_id(), time()+$cart_life);
Run Code Online (Sandbox Code Playgroud)

php mysql cookies session

5
推荐指数
1
解决办法
2903
查看次数

标签 统计

mysql ×2

php ×2

cookies ×1

pdo ×1

session ×1