2017-05-26 2 views
0

Die Daten im Formular konnten nicht in der Datenbank gespeichert werden. Ich kann nicht finden, was hier falsch ist. Ich habe bereits den Namen der Eingabeformulare überprüft und es ist alles in Ordnung. Ich bin mit PDO(PHP) Was ist mein Fehler hier?

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

Sie Fehler erhalten Sie oder ist die eingeführte 'user_accounts' Datensatz nicht erwartet, was Sie? – GreensterRox

+0

Sie verwenden PDO richtig? –

+0

Adam Forbis, ja –

Antwort

1

Ändern Sie die SQL-Abfrage aus:

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

An:

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

INSERT INTO syntax.

0

Wenn Sie mysqli verwenden, Acording zum documentation, die bind_param (statt bindParam ... vielleicht Sie ?

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

Typen

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

für die entsprechenden Bindungsvariablen:: einen Rahmen verwenden) Funktion, um den ersten Parameter erwartet eine Zeichenfolge, anstelle eines int sein

i entspricht Variable hat den Typ Integer

d entsprechende Variable hat Typ double

s entsprechende Variable String

b entsprechende Variable ein Blob-Typ und wird in Paketen gesendet werden

Sie sollten die 1,2,3,4 ändern ... zu ‚d, s , b '(der Variablentyp), und es sollte funktionieren.

Hoffe es hilft!

0

Sie müssen den Parametertyp binded angeben, und auch Ihre Abfrage war falsch.

Hier ist die richtige Version in 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(); 

Hier ist die richtige Version in 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(); 

Für MySQLi: In diesem Beispiel habe ich die entsandten alle Daten angenommen Zeichenfolge sind Andernfalls müssten Sie die Funktion "sssssss" in der Funktion bindParam ändern.

Lesen Sie mehr über vorbereitete Anweisungen here
Lesen Sie mehr über MySQLi INSERT Syntax here