1

ユーザーがデータを挿入するフォームがありますが、同じページに戻って情報を編集できます。私のテーブル構造は次のとおりです。 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>
4

4 に答える 4

5

INSERT ... ON DUPLICATE KEY UPDATE 構文を使用できます

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

INSERT INTO テーブル (a、b、c) 値 (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;

于 2012-04-22T19:43:54.733 に答える
2

INSERT ... ON DUPLICATE UPDATE 構文が必要です

于 2012-04-22T19:44:02.457 に答える
0

使用できるテキストエリア

<textarea name="Doc_Name" style="width:500px; height:150px" type="text" id="Doc_Name" size="300"><? echo $row_settings['Doc_Name']; ?></textarea>

タグ間のすべてが表示され、編集可能

編集:他のポスターへ:いい、重複して挿入を知らなかった

于 2012-04-22T19:43:05.237 に答える
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
}
于 2012-04-22T19:50:27.730 に答える