根据电子邮件地址更新Mysql列字段

时间:2011-07-27 20:08:30

标签: php mysql sql-update

我的数据库有列:ID,first_name,电子邮件,密码,级别

我有一个表单,我正在尝试根据现有用户输入的“电子邮件地址”更新“级别”列。

现在我有一个只插入信息的基本表单,但我需要它根据电子邮件值更新现有用户。

这就是我所拥有的

<form action="update.php" method="post">

<input type="hidden" name="action" value="update" />

<fieldset>
<label  for="email" />Email Address:</label>
<input  value="" type="text" name="email" id="email" />
<label  for="level" />Level:</label>
<input  value="vip" type="text" name="level" id="level" />
<input class="button" type="image" src="/img/right/get-started-button.png" />
</fieldset>
</form>

---- update.php ------

<?php
$email = $_POST['email'];
$level = $_POST['level'];

mysql_connect ("localhost", "username", "pass") or die ('Error: ' . mysql_error());
mysql_select_db ("db_name");

$query="INSERT INTO users (email, level)VALUES ('".$email."','".$level."')";

mysql_query($query) or die ('Error updating database');

echo "Database Updated With: " .$email. " ".$level ;

?>

2 个答案:

答案 0 :(得分:2)

不知道您使用的是什么版本的MySQL,如果你的5+以上,你可以使用INSERT ON DUPLICATE KEY UPDATE语法:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

如果您使用旧版本,那么简单的选择id限制1就足以找到该记录是否存在。

BTW:在执行sql语句之前,你应该使用mysql_real_escape_string(或类似的)。如果你在字段名称中点击保留字或无效符号,也总是在你的字段名称周围使用反向标记也是一个好主意。

答案 1 :(得分:1)

我不确定如果我正确理解你的问题,但如果你正在寻找sql更新:

    UPDATE users Set level='some_value' WHERE email="some_email_address"

所以你可以这样做:

    $query="UPDATE users SET level='" .$level."' WHERE email='" .$email."'";

如果我正确理解你的问题。 正如在您尝试更新现有表格时,基于在表单中键入的电子邮件地址。