我正在努力为我的项目找到错误的解决方案,有人可以帮助我并告诉我正确的方法。
这是我的代码:
$productkey = $_SESSION['key'];
$productuser = $_SESSION['user'];
$productemail = $_SESSION['email'];
// Include Database Connection
require 'assets/sys/config.php';
$query = dbConnect()->prepare("INSERT INTO _system (_product_key, _product_user, _product_email, _site_email, _site_title) VALUES (:_product_key, :_product_user, :_product_email, :_site_title, :site_email)");
$query->bindParam(':_product_key', $productkey);
$query->bindParam(':_product_user', $productuser);
$query->bindParam(':_product_email', $productemail);
$query->bindParam(':_site_title', $_POST['sitetitle']);
$query->bindParam(':_site_email', $_POST['siteemail']);
$query->execute();
我收到的错误:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in
答案 0 :(得分:1)
在您的查询中,您有:
:site_email
但你确实绑定了这个:
$query->bindParam(':_site_email', $_POST['siteemail']);
这些是不同的,编辑:
$query->bindParam(':site_email', $_POST['siteemail']);
或者更改sql上的参数。
答案 1 :(得分:0)
您的绑定参数中有拼写错误。 :site_email
代替:_site_email
。
顺便说一句......你知道你可以用一个简单的哈希数组做到这一点,对吧?只需将键命名为与查询中的占位符相同。
答案 2 :(得分:0)
正如其他人所指出的那样,这是错字。但是,您的_site_email
和_site_title
顺序错误,因此您无法将数据插入到您期望的位置。
应该是:
$query = dbConnect()->prepare("INSERT INTO _system (_product_key, _product_user, _product_email, _site_title, _site_email)
VALUES (:_product_key, :_product_user, :_product_email, :_site_title, :_site_email)");