2017-02-07 3 views
-1

Ich habe versucht, Daten von $ _Post Variablen einzugeben, aber ich kann nicht feststellen, wo der Fehler ist? Hoffe, du kannst mir helfen. Unten ist der Code:

$conn = mysql_connect("localhost", "root"); 
if (isset($_POST['studLog'])) { 
$uName = $_POST['uName']; 
$pWord = $_POST['pWord']; 

mysql_select_db("sis_main", $conn); 

if (mysql_num_rows(mysql_query("SELECT * from student where stud_uname='$uName' and stud_pword='$pWord'"))) { 
    include("stud-view.html"); 
} else { 
    echo 'Account doesnt exist!'; 
    echo "<br><br>"; 
    echo "<a href='stud-start.html'>GO BACK!</a>"; 
} 
} else if (isset($_POST['studReg'])) { 

mysql_select_db("sis_main", $conn); 
$stdID = $_POST['studID']; 
$fname = $_POST['firstNme']; 
$mname = $_POST['midNme']; 
$lname = $_POST['lastNme']; 
$stadd = $_POST['stAdd']; 
$ctadd = $_POST['ctAdd']; 
$bdate = $_POST['bDate']; 
$gendr = $_POST['gender']; 
$email = $_POST['email']; 
$mobno = $_POST['mobNum']; 
$uname = $_POST['newUName']; 
$pword = $_POST['newPWord']; 
$age = birthday($bdate); 

if (mysql_query("INSERT INTO student values (`$stdID`,`$fname`,`$lname`, `$mname`,`$stadd`,`$ctadd`,`$age`,`$bdate`,`$gendr`, `$email`,`$mobno`,`$uname`,`$pword`);")) { 
    echo 'Account Successfully Regsitered!'; 
} else { 
    echo 'ERROR: '.mysql_error(); 
    echo "<a href='stud-start.html'>GO BACK!</a>"; 
} 


} 
} 

ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '@gmail.com, 09981744039, kuyschan, kuyschan)' at line 1

+0

a) parametrisierte Anweisungen verwenden. um sich vor ** SQL Injection ** und den meisten SQL-Syntaxfehlern zu schützen. b) ** verwende nicht veraltete mysql-Funktionen, benutze stattdessen "PDO" oder "mysqli". c) ** niemals jemals unverhashte Passwörter speichern, benutze 'password_hash()' und 'password_verify()' –

+0

describe table.what ist der Datentyp der "email" -Spalte. – denny

+0

danke für dein Feedback! Die E-Mail-Spalte ist varchar (30) –

Antwort

0

Dieses suppposed ist ein Kommentar zu sein, aber ich habe einen niedrigen Ruf hier.

Bevor ich Ihre Frage beantworte, benutzen Sie bitte nicht die mysql-Funktionen, da diese nicht mehr unterstützt werden. Stellen Sie sich einen Wechsel zu MYSQLI oder PDO vor. Vertrauen Sie auch nicht Benutzereingaben. Das bedeutet, dass Feldwerte nicht direkt von Ihrem Formular in Ihre Datenbank gepostet werden, da ein Attacker dies einfach durch Hinzufügen von lustigen Javascripts oder Schlimmerem ausnutzen kann.

Um Ihre Frage,

In Ihrem Insert-Anweisung, Sie nicht die Spalten angeben:

Versuchen:

<?php 

$sql = "INSERT INTO student (`studID`, `firstNme`, `lastNme`,`stAdd`,`ctAdd`,`bDate`,`gender`,`email`,`mobNum`,`newUName`,`newPWord`)VALUES 
('" . mysqli_real_escape_string($con, $_POST['studID']) . "', 
'" . mysqli_real_escape_string($con, $_POST['firstNme']) . "', 
'" . mysqli_real_escape_string($con, $_POST['lastNme']) . "', 
'" . mysqli_real_escape_string($con, $_POST['stAdd']) . "', 
'" . mysqli_real_escape_string($con, $_POST['ctAdd']) . "',  
'" . mysqli_real_escape_string($con, $_POST['bDate']) . "', 
'" . mysqli_real_escape_string($con, $_POST['gender']) . "', 
'" . mysqli_real_escape_string($con, $_POST['email']) . "', 
'" . mysqli_real_escape_string($con, $_POST['mobNum']) . "', 
'" . mysqli_real_escape_string($con, $_POST['newUName']) . "',  
'" . mysqli_real_escape_string($con, $_POST['newPWord']) . "')"; 
if ($con->query($sql) === TRUE) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$ conn-> close();

Wobei $ con Ihre Datenbankverbindung ist.

<?php 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "myDB"; 

// Create connection 
$con = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($con->connect_error) { 
    die("Connection failed: " . $con->connect_error); 
} 
+0

Oder, wenn Sie nicht von typisierten Zeichen bezahlt werden, können Sie nur vorbereitete Aussagen verwenden ;-) –

+0

yeah you right. Ich habe diese Antwort nur als Workaround für dieses spezielle Szenario gegeben :) – Akintunde007