1
我想知道是否有人可以在此指向我正確的路徑。有一個帶有字段的數據庫:PersonID
,FirstName
,LastName
,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;
} ?>
因此,查詢更新了FirstName
和Last Name
值但沒有isActive
價值,爲什麼會發生這種情況?
此代碼只在它的SQL Server的呼叫儘管你堅持這是MySQL的。 – tadman
**警告**:這有一些嚴重的[SQL注入漏洞](http://bobby-tables.com/),因爲在查詢中使用了$ _GET數據。儘可能使用**準備好的陳述**。在[PDO](http://php.net/manual/en/pdo.prepared-statements.php)中,這些都很簡單,用戶提供的數據用'?'或':name'指示器指定稍後使用'execute'填充。 **絕不**將'$ _POST','$ _GET'或任何用戶數據直接放入您的查詢中。 – tadman
表單提交時是否有從下拉列表中選擇的任何值,或者它是默認值? –