2017-05-26 131 views
0

表单上的数据未能保存在数据库中。我找不到这里有什么问题。我已经检查过输入表单的名称,这是完全正确的。我使用的PDO(PHP)这里我的错误是什么?

if ($_POST) { 
$accountuname = ($_POST['accountuname']); 
$accountpassword = ($_POST['accountpassword']); 
$accounttype = ($_POST['accounttype']); 
$companyname = ($_POST['companyname']); 
$companyproduct = ($_POST['companyproduct']); 
$companyaddress = ($_POST['companyaddress']); 
$companycontactnum = ($_POST['companycontactnum']); 

$query = "INSERT INTO user_accounts SET USER_NAME=?, USER_PASS=?, USER_ACC_TYPE=?, COMPANY_NAME=?, COMPANY_PRODUCT=?, COMPANY_ADDRESS=?, COMPANY_CONTACTNUM=?"; 
$stmt = $conn->prepare($query); 
$stmt -> bindParam(1,$accountuname); 
$stmt -> bindParam(2,$accountpassword); 
$stmt -> bindParam(3,$accounttype); 
$stmt -> bindParam(4,$companyname); 
$stmt -> bindParam(5,$companyproduct); 
$stmt -> bindParam(6,$companyaddress); 
$stmt -> bindParam(7,$companycontactnum); 
$stmt -> execute(); 
}else{ 
header("location:index.php"); 
} 
+0

你得到任何错误或插入'user_accounts'记录不是你期待什么呢? – GreensterRox

+0

您正在使用PDO吗? –

+0

Adam Forbis,是 –

回答

1

更改SQL查询来自:

INSERT INTO user_accounts SET USER_NAME=?, USER_PASS=?, USER_ACC_TYPE=?, COMPANY_NAME=?, COMPANY_PRODUCT=?, COMPANY_ADDRESS=?, COMPANY_CONTACTNUM=? 

要:

INSERT INTO user_accounts (USER_NAME, USER_PASS, USER_ACC_TYPE, COMPANY_NAME, COMPANY_PRODUCT, COMPANY_ADDRESS, COMPANY_CONTACTNUM) VALUES (?, ?, ?, ?, ?, ?, ?) 

INSERT INTO syntax.

0

如果您使用的mysqli,acording到documentationbind_param(而不是bindParam ...也许你?使用的框架)函数期望的第一个参数是字符串,而不是一个int:

bind_param (string $types , mixed &$var1 [, mixed &$... ]) 

类型

A string that contains one or more characters which specify the types 

用于相应绑定变量:

i。相应变量具有类型整数

d对应变量具有类型双重

及其对应变量的类型为字符串

B中的对应变量是一个blob,将在数据包被发送

,则应该更换1,2,3,4 ......为“d,S ,b'(变量类型),它应该工作。

希望它有帮助!

0

您必须指定绑定的参数类型,并且您的查询也不正确。

这里是库MySQLi正确的版本:

$query = "INSERT INTO user_accounts (USER_NAME, USER_PASS, USER_ACC_TYPE, COMPANY_NAME, COMPANY_PRODUCT, COMPANY_ADDRESS, COMPANY_CONTACTNUM) VALUES (?, ?, ?, ?, ?, ?, ?)"; 
$stmt = $conn->prepare($query); 

$stmt->bindParam("sssssss", $accountuname, $accountpassword, $accounttype, $companyname, $companyproduct, $companyaddress, $companycontactnum); 

// Set parameters and execute 
$accountuname = $_POST['accountuname']; 
$accountpassword = $_POST['accountpassword']; 
$accounttype = $_POST['accounttype']; 
$companyname = $_POST['companyname']; 
$companyproduct = $_POST['companyproduct']; 
$companyaddress = $_POST['companyaddress']; 
$companycontactnum = $_POST['companycontactnum']; 
$stmt->execute(); 

这里是PDO正确的版本:

$query = "INSERT INTO user_accounts (USER_NAME, USER_PASS, USER_ACC_TYPE, COMPANY_NAME, COMPANY_PRODUCT, COMPANY_ADDRESS, COMPANY_CONTACTNUM) VALUES (:uname, :upass, :utype, :cname, :cproduct, :caddress, :ccontactnum)"; 
$stmt = $conn->prepare($query); 

$stmt->bindParam(':uname', $accountuname); 
$stmt->bindParam(':upass', $accountpassword); 
$stmt->bindParam(':utype', $accounttype); 
$stmt->bindParam(':cname', $companyname); 
$stmt->bindParam(':cproduct', $companyproduct); 
$stmt->bindParam(':caddress', $companyaddress); 
$stmt->bindParam(':ccontactnum', $companycontactnum); 

// Set parameters and execute 
$accountuname = $_POST['accountuname']; 
$accountpassword = $_POST['accountpassword']; 
$accounttype = $_POST['accounttype']; 
$companyname = $_POST['companyname']; 
$companyproduct = $_POST['companyproduct']; 
$companyaddress = $_POST['companyaddress']; 
$companycontactnum = $_POST['companycontactnum']; 
$stmt->execute(); 

对于mysqli的:在这个例子中,我假定所有发布的数据是串,否则你将不得不改变bindParam函数中的'sssssss'。

了解更多关于准备好的发言here
了解更多关于MySQLi的INSERT语法here