无法在表格中插入数据我正在使用mysql数据库
$conn = new mysqli("localhost","username","password", "dbname");
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$stmt = $conn->prepare("INSERT INTO mail_sent(mid, miid,status) VALUES (:mid, :miid,:status)");
$stmt->bind_param('dds',$mail_id, $inv_id, $mailStatus);//line 37
$stmt->bindParam(':mid', $mail_id);
$stmt->bindParam(':miid', $inv_id);
$stmt->bindParam(':status', $mailStatus);
$stmt->execute();
致命错误:在第37行的C:\ wamp \ www \ mail \ toinvite.php中的非对象上调用成员函数bind_param()
答案 0 :(得分:1)
您的问题是您将PDO与MySQLi混淆。只有PDO的语法为:mid
,MySQL / MySQLi无法理解这一点。对于MySQLi中的预处理语句,您必须使用?
作为占位符。
if ($stmt = $conn->prepare("INSERT INTO mail_sent (mid, miid, status) VALUES (?, ?, ?)")) {
$stmt->bind_param('iis', $mail_id, $inv_id, $mailStatus);
$stmt->execute();
}
正如您所看到的,MySQLi在一行中处理所有绑定,与PDO略有不同。此外,您的数据库的ID为整数,因此我也将它们分配为bind_param
中的整数(您之前使用的是双打)。
i
对应变量的类型为整数d
对应变量的类型为double s
对应的变量具有类型字符串b
对应的变量是一个blob,将以数据包的形式发送参考:
答案 1 :(得分:0)
尝试在准备声明后立即执行。
var_dump($stmt);
我确信准备声明失败了(即返回FLASE)。如果失败了,你就不能打电话给bind_param()
。
您在DB或表名
并且你确定mid, miid
是双倍而不是整数,因为你使用'd'来绑定params。