2012-04-03 12 views
1

Ich habe dieses Stück CodePHP, Datenbank Ausgabe

<?php 


$con = mysql_connect("localhost","root","password"); 
if (!$con) 
{ 
die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("tables", $con); 
$sql="INSERT INTO customer (Name, Telephone, Email, Address, PostCode, Specialisation) 
VALUES 
($_POST['firstname'], $_POST['telephone'],$_POST['email'],   $_POST['address'],$_POST['postcode'],$_POST['special'])"; 

if (!mysql_query($sql,$con)) 
{ 
die('Error: ' . mysql_error()); 
} 
echo "Inserted into Worker database"; 

mysql_close($con); 
?> 

Ich erhalte diese fehler- Parse error:. Syntaxfehler, unerwartete T_ENCAPSED_AND_WHITESPACE, erwartet T_STRING oder T_VARIABLE oder T_NUM_STRING in

Ich bin nicht sicher, was sonst noch zu tun ist. Bitte helfen Sie. Danke

+0

Können Sie uns bitte sagen, welche Zeile diesen Fehler verursacht? – Intrepidd

+0

Diese Zeile - ($ _ POST ['Vorname'], $ _POST ['Telefon'], $ _ POST ['E-Mail'], $ _POST ['Adresse'], $ _ POST ['Postleitzahl'], $ _ POST [' special ']) "; – Ester

+0

i Denken Sie zuerst sollten Sie überprüfen, welche Abfrage Sie ausführen, indem Sie es drucken. Ist es die Abfrage, die Sie wollten, überprüfen Sie es mit phpmyadmin und lassen Sie mich wissen. – Sumant

Antwort

4

Sie haben mehrere Probleme.

Zuerst müssen Zeichenfolgenwerte, die Sie in die Datenbank einfügen, in einfachen Anführungszeichen stehen.

Zweitens Array-Variablen in Strings müssen gewickelt werden {} (dh $string = "Something something {$_POST['variable']}..."; der PHP-Parser Figur zu helfen, sie aus.

Drittens diesen Code (einmal in Betrieb) ist massiv gefährdet über SQL-Injection zu hacken. betrachten Sie PDO mit und vorbereitete Anweisungen (wie die mysql_* Funktionen veraltet werden), oder zumindest laufen Benutzereingabe durch mysql_real_escape_string().

$sql="INSERT INTO customer (Name, Telephone, Email, Address, PostCode, Specialisation) VALUES ('" . mysql_real_escape_string($_POST['firstname']) . "', '" . mysql_real_escape_string($_POST['telephone']) . "', '" . mysql_real_escape_string($_POST['email']) . "', '" . mysql_real_escape_string($_POST['address']) . "', '" . mysql_real_escape_string($_POST['postcode']) . "', '" . mysql_real_escape_string($_POST['special']) . "')"; 

Viertens, die Sie wirklich nicht root Benutzer der Datenbank des verwenden sollten verbinden.

1

Ihre $sql Variable ändern in einer Zeile zu lesen und das richtige Format zu SQL senden:

$sql="INSERT INTO customer (Name, Telephone, Email, Address, PostCode, Specialisation) VALUES ({$_POST['firstname']}, {$_POST['telephone']},{$_POST['email']}, {$_POST['address']},{$_POST['postcode']},{$_POST['special']})"; 

Das sollte die PHP-Fehler von unexpected T_ENCAPSED_AND_WHITESPACE korrigieren, aber Sie werden mehr corrections-fix die SQL Injection Möglichkeit benötigen.

+0

PHP überspannt mehrere Zeilen in einer Zeichenfolge, gut. -1. – ceejayoz