PHP mySQL准备语句错误

PHP mySQL准备语句错误,php,mysql,pdo,mysqli,Php,Mysql,Pdo,Mysqli,可能重复: 我得到以下错误: 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 = $mysql

可能重复:

我得到以下错误:

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语句,它工作了。“用户”是一个有效的表。连接的权限是root,所以这不是问题所在。我已经将日期的类型在“s”和“d”之间切换,甚至尝试了所有使用虚拟变量的方法——没有区别


我希望这是一件简单的事情-因为我已经绞尽脑汁了一个小时了,我看不出上面的语句有任何错误。

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

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

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

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

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

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

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

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

它是-我做了一个
var\u转储($stmt)
,它返回了
FALSE
,所以我不知所措,因为语句看起来是正确的。检查$mysqli::error以了解原因。我发现了问题-我在INSERT上缺少了一个字段-该死的,我讨厌这么简单的事情…是-我做了
var\u转储($stmt)
并且它返回了
FALSE
,因此我不知所措,因为该语句看起来是正确的。检查$mysqli::error以了解原因。我发现了问题-我在INSERT上缺少了一个字段-该死的,我讨厌这么简单的事情…是的-我在
var\u dump($stmt)
上收到了
FALSE
,这让我很困惑,因为语句有正确的语法,它是一个正确的表,字段计数是正确的,等等。编辑:我发现了问题-我在INSERT上缺少了一个字段-该死的,我讨厌这么简单的事情。。。。在一个相关的例子中,因为我不是mySQL的高手,有没有一种方法可以只针对几个字段进行INSERT-即排除语句中的尾随字段?是的-我在
var\u dump($stmt)
上收到
FALSE
,这让我很困惑,因为语句的语法正确,它是一个正确的表,字段数是正确的,等等。编辑:我发现了问题-我在插入中缺少了一个字段-该死的,我讨厌这么简单的事情。。。。在一个相关的例子中,因为我不是mySQL最好的,有没有一种方法可以只针对几个字段进行插入-即排除语句中的尾随字段?对我来说似乎有7个,第一个“变量”包含字段类型。啊..谢谢你,先生-我知道有一种方法!在我看来是7,第一个“变量”包含字段类型。啊..谢谢你,先生-我知道有办法!