我的数据库有列: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 ;
?>
答案 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."'";
如果我正确理解你的问题。 正如在您尝试更新现有表格时,基于在表单中键入的电子邮件地址。