PHP mySQL准备语句错误

时间:2012-09-04 16:14:13

标签: php mysql pdo mysqli

  

可能重复:
  Call to a member function bind_param() on a non-object

我收到以下错误:

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”之间切换了日期的类型,甚至尝试了所有虚拟变量 - 没有区别。

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

在回答您的问题时,您可以执行以下操作:

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