【发布时间】: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.