1

可能重复:
在非对象上调用成员函数 bind_param()

我收到以下错误:

Call to a member function bind_param() on a non-object

这是准备好的声明:

include('/path/to/connection/variable.php');

该文件已被验证可以正常工作,它只是创建了一个 mysqli 类的实例,例如:

$mysqli = new mysqli("localhost", "user", "password", "db");

所以我知道这不是问题...

$stmt = $mysqli->prepare("INSERT INTO `users` VALUES (?,?,?,?,?,?,?)");
$stmt->bind_param("sssssss", $firstname, $lastname, $email, $subscribed, $signup_date, $unsubscribe_date, $signup_source);
$stmt->execute();
$stmt->close();
$mysqli->close();

变量类型如下:

$firstname = string
$lastname = string
$email = string
$subscribed = char (Y or N)
$signup_date = DATE - date('Y-m-d')
$unsubscribe_date = DATE - 0000-00-00 Entered Initially
$signup_source = string

我试图找到所有常见的嫌疑人,检查连接,基本上我写了一个单独的 SELECT 语句并且它有效。“USERS”是一个有效的表。连接的权限是 root,所以这不是问题。我已经在“s”和“d”之间切换了日期的类型,甚至用虚拟变量尝试了一切——没有区别。

我希望这很简单——因为过去一个小时我一直在绞尽脑汁,我看不出上面的陈述有什么问题。

4

2 回答 2

4

这通常意味着您的->prepare()调用失败,并返回一个布尔值 FALSE 而不是语句对象。检查:

$stmt = $mysqli->prepare("INSERT INTO `users` VALUES (?,?,?,?,?,?,?)") or die($mysqli::error);
于 2012-09-04T16:16:58.327 回答
1

针对您的问题,您可以执行以下操作:

 INSERT INTO tableName (column1, column2, column3,...) 
 VALUES (value1, value2, value3,...)
于 2012-09-04T16:23:19.973 回答