我有一个用户插入数据的表单,但他们可以返回同一页面来编辑他们的信息。我的表结构是:
id (auto int index),
user id (links to other tables),
Doc_Name,
Abstract
我有一个插入查询:
$user_id = intval($_SESSION['user_id']);
$Doc_Name = mysql_real_escape_string($_POST['Doc_Name']);
$abstract = mysql_real_escape_string($_POST['abstract']);
$the_query = sprintf("INSERT INTO `document` (`user_id`,`Doc_Name`,`abstract`) VALUES
('%d','%s','%s')", $user_id, $Doc_Name, $abstract);
但是,如果它们已经是此user_id的一行,那么我想要更新查询:
mysql_query("UPDATE document SET `Doc_Name` = '$Doc_Name', 'abstract='$abstract'
WHERE id='$_SESSION[user_id]'") or die(mysql_error());
另外,所以用户知道他们输入了什么,我试图在文本框中使用这个回声,但这也不起作用,
<textarea name="Doc_Name" style="width:500px; height:150px" type="text" id="Doc_Name"
value="<? echo $row_settings['Doc_Name']; ?>" size="300"> </textarea>
答案 0 :(得分:5)
您可以使用INSERT ... ON DUPLICATE KEY UPDATE语法
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
INSERT INTO表(a,b,c)VALUES(1,2,3)在DUPLICATE KEY UPDATE C = C + 1;
答案 1 :(得分:2)
答案 2 :(得分:0)
对于textarea你可以使用
<textarea name="Doc_Name" style="width:500px; height:150px" type="text" id="Doc_Name" size="300"><? echo $row_settings['Doc_Name']; ?></textarea>
标签之间的所有内容都会显示和编辑
编辑:对其他海报:很好,不知道INSERT ON DUPLICATE
答案 3 :(得分:0)
查询:
SELECT * FROM document WHERE id='{$SESSION['user_id']}'
PHP:
if(mysql_num_rows(mysql_query($query)) > 0) {
//code to be executed if id exists
}