2017-02-07 12 views
-1

$ _Post変数からデータを入力しようとしましたが、エラーの原因を特定できません。あなたが私を助けてくれることを願います。 は、以下のコードである:これはコメントであることをsuppposedさ

$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)パラメータ化された文を使用します。 ** SQL Injection **やほとんどのSQL構文エラーから身を守るためです。 b)**廃止された 'mysql'関数を使用しない**代わりに' PDO'または 'mysqli'を使います。 c)**ハッシュされていないパスワードを保存することは決してありません。 'password_hash()'と 'password_verify()'を使用してください。 –

+0

は "email"カラムのデータ型です。 – denny

+0

ご意見ありがとうございます。電子メール列はvarchar(30) –

答えて

0

、しかし、私はここに低い評判を持っています。

質問に答える前に、サポートされなくなったmysql関数を使用しないでください。 MYSQLIまたはPDOへの切り替えを検討してください。また、ユーザー入力を信頼しないでください。意味は、attckerが面白いjavascriptsを悪化させることによって簡単に悪用できるように、フィールド値をフォームからデータベースに直接ポストすることはありません。あなたのINSERT文で、あなたの質問に

、あなたが列を指定しませんでした:

試してみてください。

<?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->近いです();

ここで、$ conはデータベース接続です。

<?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

または、あなたがタイプされたキャラクターによって支払われていないなら、あなたは準備されたステートメントを使うことができます;-) –

+0

そうです。私はちょうどこの特定のシナリオの回避策としてこの答えを与えた:) – Akintunde007

関連する問題