2017-05-26 96 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