2013-08-28 33 views
0
<form name="applyform" action="applyform.php" method="post"> 
    <fieldset> 
     <legend>Application Details</legend> 
     <p>Name :<?php echo $row ["Emp_Fname"]; ?></p> 
     <p>ID number :<?php echo $row['Emp_ID']; ?></p> 
     <p>Email :<?php echo $row['Emp_Email']; ?></p> 
     <p>Address :<?php echo $row['Emp_Address']; ?></p> 
     <p>Handphone Number :<?php echo $row['ContactNo_HP']; ?></p> 
     <p>Phone Number :<?php echo $row['ContactNo_Home']; ?></p> 
     <p>Date of application :<?php echo $row['Leave_RequestDate']; ?></p> 
     <p>Type of leave: 
      <select name="leave type"> 
       <option selected>Annual leave</option> 
       <option>Sick leave</option> 
       <option>Emergency leave</option> 
       <option>Maternity leave</option> 
      </select> 
     </p> 
     <p>Leave duration:<input type="date" name="leave_start">to<input type="date" name="leave_end"></p> 
     <p>Reason:<textarea rows="4" cols="50" name="reason"></textarea></p> 
     <p><input type="submit" name="submitbtn" value="Submit"/> 

這是我的表單的代碼。有什麼不對的嗎?爲什麼我在提交表單時無法更新數據庫?

<?php 

if(isset($_POST['submitbtn'])) { 

    if(!$con) { 
    die("cannot connect : " .mysql_error()); 
    } 
    $sql = ("INSERT INTO leave(Leave_Start,Leave_End,Leave_Reason) VALUES('$_POST[leave_start]','$_POST[leave_end]','$_POST[reason]')"); 
    mysql_query($sql,$con); 

    mysql_close($con); 
} 
?> 

以上是我的PHP代碼。當我嘗試提交表單時,數據庫不會更新,任何人都可以幫助我?

+0

它說的是什麼錯誤? –

+0

根本沒有錯誤.....但數據庫只是不會更新 –

+0

使用MySQLi或PDO連接到MySQL數據庫。根據此頁面上的警告,不推薦使用mysql_'函數:http://php.net/manual/en/function.mysql-connect.php –

回答

-1

你插入不正確:

$sql = ("INSERT INTO leave(Leave_Start,Leave_End,Leave_Reason) VALUES('$_POST[leave_start]','$_POST[leave_end]','$_POST[reason]')"); 

應該是這樣的:

$sql = ("INSERT INTO leave(Leave_Start,Leave_End,Leave_Reason) VALUES('{$_POST["leave_start"]}','{$_POST["leave_end"]}','{$_POST["reason"]}')"); 

你應該總是逃避字符串中的特殊字符。否則會被誤解。

http://php.net/manual/en/language.types.string.php

順便說一下,我假設$ con是一個有效的連接對象。

+0

仍然是相同的結果 –

+0

爲什麼不使用簡單。連接而不是'{$ _POST []}'? – 2013-08-28 11:55:27

0

你忘了在PHP代碼的第5行中包含mysql_connect嗎?取而代之的

$sql = ("INSERT INTO leave(Leave_Start,Leave_End,Leave_Reason) VALUES('$_POST[leave_start]','$_POST[leave_end]','$_POST[reason]')"); 

$con = mysql_connect('mysql_host', 'mysql_user', 'mysql_password'); 
0

嘗試

$sql = ("INSERT INTO leave(Leave_Start,Leave_End,Leave_Reason) VALUES('".$_POST["leave_start"]."','".$_POST["leave_end"]."','".$_POST["reason"]."')"); 

通知:做這樣一個查詢是不安全的$_POST沒有檢查之前

這樣的事情應該是更好

$sql = ("INSERT INTO leave(Leave_Start,Leave_End,Leave_Reason) VALUES('".mysqli_real_escape_string($con,$_POST["leave_start"])."','".mysqli_real_escape_string($con,$_POST["leave_end"])."','".mysqli_real_escape_string($con,$_POST["reason"])."')"); 
+0

'$ _POST [leave_start]'會產生錯誤。相反,它應該是'$ _POST ['leave_start']' –

+0

是的,我正在修復它;謝謝 – 2013-08-28 12:04:33

0

您需要了解一點關於PHP變量傳遞和SQL注入的知識。您最終的查詢必須看起來像

$sql = ("INSERT INTO leave(Leave_Start,Leave_End,Leave_Reason) VALUES('{".mysqli_real_escape_string($_POST['leave_start'])."}','{".mysqli_real_escape_string($_POST['leave_end'])."}','{".mysqli_real_escape_string($_POST['reason'])."}')"); 
0

您可以嘗試的MySQLi,而不是預測的MySQL

<?php 

if(isset($_POST['submitbtn'])) 
{ 

$connection=mysqli_connect("Host","Username","Password","Database"); 

if(mysqli_connect_errno()){ 

echo "Error".mysqli_connect_error(); 
} 

mysqli_query($connection,"INSERT INTO leave(Leave_Start, Leave_End, Leave_Reason) VALUES('$_POST[leave_start]','$_POST[leave_end]','$_POST[reason]')"); 

} 
?> 
相關問題