0

問題: 言語を編集するとき、テキスト フィールドにアポストロフィを追加できません。その場合、レコードは新しい編集で保存されません。

目標: 編集時に、これらの編集にアポストロフィを含めて正しく保存できるようにします。

現在: 数字、文字、および記号を使用できますが、アポストロフィは使用できません。

私はこれがうまくいくと思って試しましたが、役に立ちませんでした:

$val = (isset($airport_info[$airport_key])) ? sqlite_escape_string($airport_info[$airport_key]) : "";    

以下が元のコードです。

<div class="inline_div_right">
  <table>
    <?php
      $j=1;
      $some_langs_hidden = 0;
      foreach(array_keys($fields) as $airport_key)
      {
        if(is_numeric($airport_key)) continue;
        if(preg_match("/name_/", $airport_key))
        {
        $lang_iso = substr($airport_key, -2);
        $val = (isset($airport_info[$airport_key])) ? $airport_info[$airport_key] : "";
        $row_visibility = "";
          if(!in_array($lang_iso, $used_languages))
          {
          $row_visibility = "hidden_class";
          $some_langs_hidden = 1;
          }
          $row_class = ($j%2 == 0) ? "shade1" : "shade2";
          ?>
          <tr class="<?php echo $row_class.' '.$row_visibility; ?>">
          <td class='ca_left_column'><?php echo $languages[$lang_iso]; ?></td>
          <td><input type='textfield' id='<?php echo $airport_key; ?>' name='<?php echo $airport_key; ?>' class='textfield_class_large' onkeypress="hideErrorMsg(); enterSubmission(event, fcn)" value='<?php echo $val; ?>'></td>
          </tr>
          <?php
            $j++;
          }
      }

    ?>
  </table>
</div>

どんな入力でも大歓迎です。

4

1 に答える 1

0

関数を定義しました:

function sqlSecurity($sql_string)
{
  $return_string = sqlite_escape_string($sql_string);
  $val = stripslashes($return_string);
  return $val;
}

processAJAX.php ファイルでこの関数を呼び出します。主な行は次のとおりです。

 $query .= ", name_$lang_code = '".sqlSecurity($_REQUEST["name_$lang_code"])."'";

次に、テキストフィールドのビュー値について:

value="<?php echo str_replace('"', '&quot;', $val); ?>"

建設的な批判を歓迎します。正しい値がデータベースに返され、ブラウザーに正しく表示されます。

于 2013-09-04T21:30:25.810 に答える