基于邮件地址更新Mysql列字段


Update Mysql column field based on email address

我的数据库有:ID, first_name, email, password, level

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

现在我有一个基本的形式,只是插入信息,但我需要它来更新现有的用户基于电子邮件的值。

这是我的

<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 ;
?>

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

如果您使用的是旧版本,那么简单的select id limit 1应该足以查找记录是否存在。

顺便说一句:你应该在执行sql语句之前使用mysql_real_escape_string(或类似的)。这也是一个好主意,总是在您的字段名称周围使用反勾号,以防您在字段名称中遇到保留词或无效符号。

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

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

你可以这样写:

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

如果我对你的问题理解正确的话。例如,您正在尝试根据输入到表单中的电子邮件地址更新现有表。