1

私は php/mysql を使用しており、フィールドに既に存在するテキストを保持し、変更が追加されたことを確認したいと考えています (のみ)。

たとえば、mysql のテキスト フィールドに「元のテキスト 123」が含まれていて、php スクリプトに「これは新しいテキストと元のテキストです」という新しいテキストがある場合、「123」を失わないようにする必要があります。元のテキスト。新しく保存された値は、「これは新しいテキストと元のテキスト 123 です」である必要があります。

私はphp diff ライブラリを使用できると考えていましたが、それはやり過ぎであるか、より良いオプションがある可能性があります。

ほとんどの場合、「これは新しいテキストと元のテキスト 123 です」などの変更を受信するため、受信した変更の最後に「元のテキスト 123」が存在することを比較する方法が必要です。変更を受け入れます。ただし、その後の変更点は「これが新文2で原文123」ということになるかもしれません。この場合、既存のテキストを見て、入力テキストを結合する必要があるため、「これは新しいテキスト 2 これは新しいテキストと元のテキスト 123 です」という結果になるため、単純な比較を行うことができないと思いますか?

4

1 に答える 1

0

アプリケーションのニーズに応じてカスタムの文字列フォーマットが必要なため、mysqlから文字列を取得し、文字列を手動でチェックして、検索された文字列を探し、ニーズに応じてフォーマットしてから、レコードを更新することをお勧めしますmysqlDBで。これはすべて、phpスクリプト内で実行できます。

これはサンプルですが、必要に応じて異なる場合があります。注:このサンプルは、userIdと書き込む説明の2つの変数を提供するWebページからphpページを呼び出すことを前提としています。phpページは、フィールドuserIdがテーブルのキーであり、書き込む唯一のフィールドがdescriptionという名前のdbに書き込むことを想定しています。

addData.php

 <?php
 //first of all define a function to open db and get your data
  function searchIdOnDb($id)
  {
   //connect to your database
   mysql_connect("localhost","root","root");
   //specify database
   mysql_select_db("yourDBname") or die;
   //Build SQL Query
   $id = mysql_real_escape_string($id);        
   $query = "select * from yourDBtable where userId ='" . $id . "'";
   $queryResult=mysql_query($query);
   return $queryResult;
  }
  //then define a function to update your DB record
  function setRecordOnDb($id, $description)
  {
   //the connection will be still active, then it is not needed to redo it 
   $id = mysql_real_escape_string($id);        
   $description = mysql_real_escape_string($description);        
   if ($description=="") $description=" ";
   $query="UPDATE yourDBtable SET description='" . $description . "' WHERE userId='" . $id . "'";    
   $queryResult=mysql_query($query);
   return $queryResult;
  }   

  //ok, we are ready to start. first of all get your variable from the webpage
  $me=$_GET["userID"];//get user id
  $description=$_GET["description"];//get data to write
  //if no data, exit
  if ($me==null)
  {
   die;
  }

  //if no data, exit
  if ($description==null)
  {
   die;
  }

  //search in db
  $result=searchIdOnDb($me);
  $numrows=mysql_num_rows($result);
  if ($numrows == 0) { //if user is not in the db exit
   die;
  } else { 
   //the user is in the db, let's generate new description and update it
   //get description from the record
   $row = mysql_fetch_assoc($result);
   $originalDescription= $row["description"] ;
   //here compare your string description with the string originalString in order
   //to obtain the newDescription string
   //just for test i will append the two strings, but you can make your search inside the strings and format it according to your needs
   $newDescription=$originalDescription . " " . $description;
   //update record
   $setRecord  = setRecordOnDb($me, $newDescription);

  }

  if ($setRecord==FALSE ) {
   //error during write, send me email 
   $to = "yourEmail@yourProvider.com";
   $subject = "Error in file addData.php";
   $body = "Variables: \n me=" . $me . " \n newDescription=" . $newDescription .  " \n originalDescription=" . $originalDescription . " \n description=" . $description ;
   mail($to, $subject, $body);
   die;
  }else{
   //write ok, return ok
   die("ok");
  }

 ?>
于 2013-01-13T14:07:00.293 に答える