2017-07-20 50 views
1

我想知道是否有人可以在此指向我正確的路徑。有一個帶有字段的數據庫:PersonID,FirstNameLastName,isActive使用mysqlserver和PHP更新數據庫的值

我收集這些值從一種形式:

<form action="" method="POST" id="myForm"><input type="hidden" name="hdnId" id="hdnId" value="<?php echo $var_PersonID?>"> 

First Name<br> 
<input type="text" name="txt_first_name" id="txt_first_name" value="<?php echo $var_FirstName;?>"> 
Last Name<br> 
<input type="text" name="txt_last_name" id="txt_last_name" value="<?php echo $var_LastName;?>"> 
    Status <br> 
    <select name="status" id="status"> 
<option value="" > </option> 
<option value="1" >Active</option> 
<option value="2" >Inactive</option> 
    </select> 
    </form> 

的PHP代碼時提交表單是這樣的:

<?php 
     if(isset($_POST['Save']) || isset($_POST['Saveexit'])) 
     { 
      $var_PersonID  = $_POST['hdnId']; 
      $var_FirstName  = $_POST['txt_first_name']; 
      $var_LastName  = $_POST['txt_last_name']; 
      $var_IsActive  = $_POST['status']; 
       if($var_PersonID!='') 
      { 
       $sql = "UPDATE vw_Persons SET FirstName, LastName, isActive = ? WHERE PersonID = $var_PersonID "; 



       $params = array($var_FirstName, $var_LastName,$var_IsActive); 


       $stmt = sqlsrv_query($gaSql['link'], $sql, $params); 
     } 
    } ?> 

一旦頁面加載我搶值是這樣的:

enter code here 
<?php 
     if(isset($_GET['id'])) 
      { 
     $query = "SELECT * FROM vw_Persons WHERE PersonID = '" . $_GET['id'] . "'"; 
    $result = sqlsrv_query($gaSql['link'], $query) or die("<pre>" . print_r(sqlsrv_errors()) . "<br><br>$query</pre>"); 
    $obj = sqlsrv_fetch_object($result); 

    $var_PersonID  = $obj->PersonID; 
    $var_LastName  = $obj->LastName; 
    $var_FirstName  = $obj->FirstName; 
    $var_IsActive  = $obj->isActive; 

    } ?> 

因此,查詢更新了FirstNameLast Name值但沒有isActive價值,爲什麼會發生這種情況?

+0

此代碼只在它的SQL Server的呼叫儘管你堅持這是MySQL的。 – tadman

+2

**警告**:這有一些嚴重的[SQL注入漏洞](http://bobby-tables.com/),因爲在查詢中使用了$ _GET數據。儘可能使用**準備好的陳述**。在[PDO](http://php.net/manual/en/pdo.prepared-statements.php)中,這些都很簡單,用戶提供的數據用'?'或':name'指示器指定稍後使用'execute'填充。 **絕不**將'$ _POST','$ _GET'或任何用戶數據直接放入您的查詢中。 – tadman

+0

表單提交時是否有從下拉列表中選擇的任何值,或者它是默認值? –

回答

0

以及自isActive域是它僅接受值1和0,所以我把它改成<option value="0" >Inactive</option>位類型字段,它的工作