【问题标题】:PHP PDO execute statement within a function? [duplicate]PHP PDO 在函数中执行语句? [复制]
【发布时间】:2017-02-24 13:26:51
【问题描述】:

我有一个创建 cookie 并相应地使用 cookie 数据更新数据库的函数,但我似乎无法从函数内更新数据库。 is currently unable to handle this request.

您可以理所当然地认为正确的数据被输入到包括 $db 在内的函数中。一旦我注释掉准备和执行插入 $db 的两条 $stmt 行,我就可以加载页面。

$db 存在于文件调用db.php 中,在调用该函数之前我需要它。我已经在其他页面查询中测试了$db,它似乎没有问题。

function updatecookieDB($db, $email)
{
    $Selector = md5($email);
    $token = bin2hex(random_bytes(20));
    $salt = bin2hex(random_bytes(20));
    $cookiedata = $Selector.$token;
    $Hash = md5($token.$salt);
    setcookie('RememberMe',$cookiedata,time()+(3600*24*15),"/")
    $query = " INSERT INTO RememberMe(email,Selector,Hash,Salt) VALUES (:email,:Selector,:Hash,:Salt) ";
    $query_params = array ( ':email' => $email ,':Selector' => $Selector , ':Hash' => $Hash, ':Salt' => $salt );

    try
    {
    $stmt = $db->prepare($query); 
    $stmt->execute($query_params);
    {
    catch(PDOException $ex) { die("Failed to run query: " . $ex->getMessage()); }


}

可能是因为我没有返回任何东西?

【问题讨论】:

  • 那么 $email、$selector、$hash 和 $salt 属于这个函数的什么地方呢?
  • 代码的表单部分在哪里?
  • 以及如何调用该函数
  • “可能是因为我没有返回任何东西吗?” - 如果你没有调用那个自定义函数,是的......它不会做任何事情。
  • 函数 updatecookieDB($db,$Selector,$Hash) 或使用全局 $Selector 如果声明较早

标签: php pdo insert


【解决方案1】:

我将其更改为以下内容,并且可以正常工作:

    $stmt = $db->prepare($query)->execute($query_params); 

【讨论】:

  • 这和你之前的基本一样
  • 是的,我不明白为什么它有效而另一个无效
猜你喜欢
  • 2020-04-14
  • 2016-04-18
  • 1970-01-01
  • 2014-04-05
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
  • 2017-09-05
  • 1970-01-01
相关资源
最近更新 更多