PHP mySQL Prepared Statements Error


PHP mySQL Prepared Statements Error

可能重复:
调用非对象上的成员函数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"是一个有效的表。连接的权限是根权限,所以这不是问题所在。我在"s"answers"d"之间切换了日期的类型,甚至尝试了所有使用伪变量的方法——没有区别。

我希望这是一件简单的事情——因为在过去的一个小时里,我一直在绞尽脑汁,我看不出上面的说法有什么错。

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

$stmt = $mysqli->prepare("INSERT INTO `users` VALUES (?,?,?,?,?,?,?)") or die($mysqli::error);

为了回答您的问题,您可以执行以下操作:

 INSERT INTO tableName (column1, column2, column3,...) 
 VALUES (value1, value2, value3,...)