我想知道PHP中的语法是什么来更新PostgreSQL数据库中的行。我创建了一个登录页面,用于检查数据库中的UserName和Password,然后进入一个页面,在该页面中显示该用户名的数据库中的所有用户信息。我试图允许用户更改一些列,如密码,名称等。所以我添加了另一个页面,其中包含我想要更改的每个列的字段。
这是我查询的代码:
if(array_key_exists('save',$_POST))
{
$firstname=$_POST['ifirstname'];
$lastname=$_POST['ilastname'];
$email=$_POST['iemail'];
$password=$_POST['ipassword'];
$conn_string='host=#### port=#### dbname=###### user=####### password=######';
$dbconn=pg_connect($conn_string) or die('Connection failed');
$query="UPDATE project.customer SET FirstName='$firstname',
LastName='$lastname',Email='$email',Password='$password')
WHERE UserName=$1";
$result=pg_query($dbconn,$query);
$row_count= pg_num_rows($result);
pg_free_result($result);
pg_close($dbconn);
}
这适用于以下字段:
<div id="header">UPDATE USER INFO</div>
<form id="testform" name="testform" method="post" action="" >
<p> <label for="ifirstname">First Name:</label>
<input name="ifirstname" type="text" id="ifirstname"/>
</p>
<p> <label for="ilastname">Last Name:</label>
<input name="ilastname" type="text" id="ilastname"/>
</p>
<p> <label for="iemail">E-Mail:</label>
<input name="iemail" type="text" id="iemail"/>
</p>
<p>
<label for="ipassword">Password:</label>
<input name="ipassword" type="password" id="ipassword"/>
</p>
<p>
<label for="iconfpass">Confirm Password:</label>
<input name="iconfpass" type="password" id="iconfpass"/>
</p>
<p>
<input type="submit" name="save" value="Register"/>
</p>
</form>
答案 0 :(得分:1)
我认为一定是这样的。出于安全原因,还要在更改数据时让用户写入旧密码。也不要忘记在查询中使用之前过滤数据以避免sql注入攻击
$query="UPDATE project.customer
SET (FirstName,LastName,Email,Password) =
('$firstname','$lastname','$email','$password')
WHERE UserName= '$1' and Password = '$oldpassword'";
答案 1 :(得分:0)
为什么不使用标准的SQL语法?
Update project.customer Set
"FirstName" = '$firstname',
...
Where ...
Postgres的主要区别在于您通常引用列名称。