2017-10-06 4 views
0

以下のコードを同じ簡単なデータに書き込んでSQLに書きました。それは、データがデータベースに保存されないことを除いてすべて正しいことをしています。phpのコードを書いてmyphpadminにデータを保存しても、データはデータベースに保存されず、エラーもありません。

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $ename = mysqli_real_escape_string($con,$_POST['ename']); 
    $enumber = mysqli_real_escape_string($con,$_POST['enumber']); 
    $eemail = mysqli_real_escape_string($con,$_POST['eemail']); 
    $eproperty = mysqli_real_escape_string($con,$_POST['eproperty']); 
    $emessage = mysqli_real_escape_string($con,$_POST['emessage']); 
    $status = "OK"; 
    $msg="";               
    if ($status=="OK") { 
     $query = mysqli_query($con,"insert into enquiry (ename, enumber, eemail, eproperty, emessage) values('$ename', '$enumber', '$eemail', '$eproperty', $'emessage')"); 
     print "<div class='alert alert-success'>Your property enquiry has been submitted successfully.</div>"; 
    } else { 
     $errormsg = "<div class='alert alert-danger'> 
      <button type='button' class='close' data-dismiss='alert'>&times;</button> 
      <i class='fa fa-ban-circle'></i><strong>Please Fix Below Errors : </br></strong>".$msg."</div>"; //printing error if found in validation 
    } 
} 

答えて

0

あなたのコードはSQL injectionsに公開されています。準備された文を使用してください。そして、エラーはここにある:

values('$ename', '$enumber', '$eemail', '$eproperty', $'emessage')"); 
ここ

$'emessage'でタイプミスなので、それを変更します。

'$emessage' 
+0

HyのMayankありがとう、mysqliの手続きスタイルを使用して準備された文の利点を持っていこう! –

0

最後のメッセージ変数が適切に

$query=mysqli_query($con,"insert into enquiry (ename, enumber, eemail, eproperty, emessage) values('$ename', '$enumber', '$eemail', '$eproperty', '$emessage')");//quote should be before variable itself 

あなたのコードは非常に脆弱であるが添加されていませんSQLインジェクションにあなたはプリペアドステートメントを使用して、その

を使用しているよう

$stmt = $con->prepare("INSERT INTO enquiry (ename,enumber,eemail,eproperty,emessage) VALUES(?,?,?,?,?)");//bind parameter to prevent sql injection 

$stmt->bind_param('sssss', $ename,$enumber, $eemail,$eproperty,$emessage); 

if($stmt->execute() === true) { 
echo 'enquiry saved'; 
} else { 
echo 'error'. $stmt->error; 
} 
関連する問題