0

PHPファイルからMySQLデータベースにアポストロフィで投稿されたデータを受け入れるためにUbuntuのローカルホストに小さな問題があります。

例:

It's your birthday!

私のローカルホストデータベースでは受け入れられず、それに付随するものも受け入れられません。

例:

Its your birthday!

アポストロフィが投稿されていない限り、ローカルホストデータベースとそれに付随する他のすべてのものに受け入れられます。

データベースに投稿されたデータでアポストロフィを受け入れるオンラインサーバーのようにローカルマシンを動作させるにはどうすればよいですか?これにより、開発中にコードが機能することがより確実になります。

mysql_real_escape_string()を使用せずにデータを受け入れるサーバーのようにローカルホストを作成したいと思います。

4

2 に答える 2

2

関数を使用してデータベースに文字列を挿入する前に、文字列をエスケープする必要があります。こちらmysql_real_escape_string()のドキュメントを参照してください

更新:addslashes() php.iniファイルでmagic_quotes_gpcを'on'に設定する必要があります。これにより、 PHP関数と同じように、サーバーの前に\を追加して特殊文字をエスケープできますmysql_real_escape_string()が、mysqlが文字列をエスケープし、関数を使用することをお勧めします。スラッシュの追加関数よりも優れているか、これを行うために使用するこの関数のような関数を使用できます。

function mysql_prep($value) {
  $magic_quotes_active = get_magic_quotes_gpc();
  $new_enough_php = function_exists( "mysql_real_escape_string" );
        // i.e. PHP >= v4.3.0
  if( $new_enough_php )  // PHP v4.3.0 or higher
  {
            // undo any magic quote effects so mysql_real_escape_string can do the work
    if( $magic_quotes_active ) 
    { 
     $value = stripslashes( $value );
    }
     $value = mysql_real_escape_string( $value );
  } else // before PHP v4.3.0
     { 
      // if magic quotes aren't already on then add slashes manually
         if( !$magic_quotes_active ) 
         { 
         $value = addslashes( $value ); 
         }
    // if magic quotes are active, then the slashes already exist
      }
  return $value;
 }
于 2011-05-11T10:20:37.340 に答える
1

mysql_real_escape_string()を使用せずにデータを受け入れるサーバーのようにローカルホストを作成したいと思います。

あなたはそれを逆にすべきです。マジッククォートは非推奨であり、PHP6では完全に削除されています。これはBadIdea™であったためです。マニュアルに記載されているように、「この機能に依存することは強くお勧めしません。」

于 2011-05-11T14:11:31.710 に答える