【问题标题】:mysqli update - copy one value into another throwing errormysqli 更新 - 将一个值复制到另一个抛出错误中
【发布时间】:2013-11-24 18:40:14
【问题描述】:

在 $mysqli->prepare 上抛出“调用非对象上的成员函数 prepare()”。原来的工作非常好。这在mysqli中是不可能的吗?

我想我应该说清楚 mysqli 设置正确,如 include - $mysqli = new mysqli($db_host, $db_user, $db_pass, $db_database);

原创:

mysql_query("UPDATE test_users SET lastIP=currIP, dtLastLogin=dtCurrLogin WHERE user='".$user."'");  

新的mysqli版本:

function user_login($user)
{
// Update user's last ip and last login date in db  
$stmt = $mysqli->prepare("UPDATE test_users SET lastIP = currIP, dtLastLogin = dtCurrLogin WHERE user= ?");
// bind params
$stmt->bind_param('s', $user);
// execute prepared statement
$stmt->execute();
// close statement
$stmt->close();

【问题讨论】:

  • 你的user_login 函数不知道$mysqli 是什么。
  • $mysqli 应该在你的函数中包含你的数据库凭证,或者像Mike W suggested那样做
  • 抱歉,我编辑了帖子。 $mysqli 已在另一个页面上正确设置并包含在内,因此这不是问题。
  • 错误'Call to a member function prepare() on a non-object' on the $mysqli->prepare说得好:$mysqli不存在于你的函数体中。正如@MikeW 建议的那样,Either declare it as a global variable, or pass it in as an argument.

标签: php mysql mysqli


【解决方案1】:

你可以用mysqli做你想做的事,但你还没有在你的函数中初始化变量$mysqli

要么将其声明为global 变量,要么将其作为参数传入。

【讨论】:

  • 我编辑了我的帖子 - 它通过包含的自己的页面正确设置。其他页面运行良好我只是遇到了这段特定代码的问题。
  • 在你的函数中是关键。仅仅因为$mysqli 存在 somewhere 并不意味着它在您的函数inside 范围内。
猜你喜欢
  • 1970-01-01
  • 2023-01-12
  • 2013-10-09
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-26
  • 1970-01-01
相关资源
最近更新 更多