1

簡単かもしれませんが、ここでこの質問に対する正確な答えを見つけることができませんでした(答えがある場合は、正しい方向に私を向けてください)。

MySQL からいくつかのデータを取得していますが、一部の文字が原因でデータがエンドポイントに表示されません。したがって、これらの特定の文字を選び出し、許可された文字に置き換える必要があります。具体的には & 、 ' 、 + を変更する必要があります。私はこのクエリからこれを行う必要があります:

$query = "select * from data where a_data_id=".$ID." AND a_discard_data_from!=1";

この文字列に追加できるかどうか、またはこの文字列の後に & 、 ' または + を別の文字に置き換えるルールを追加できるかどうか疑問に思っていました。

ご覧いただきありがとうございます。

注:上記の文字列に問題はありません。問題なく機能しています。クエリから取得したデータの特定の文字を置き換えるコードを追加したいだけです。

周囲のコード:

$arr="";
$main_arr="";
$query = "select * from data where a_data_id=".$ID." AND a_discard_data_from!=1";
$query .=" and last_update >= " . '"' . $dataDate . '"';
$table = mysql_query($query);
if (mysql_num_rows($table) > 0) {
    while ($row = mysql_fetch_assoc($table)) {
        foreach ($row as $key => $value) {
            $arr[$key] = $value;
            if ($key == "to_data_id") {    
               $array=mysql_fetch_array(mysql_query("select name,additional from details where data_id=".$value));
                $arr["data_id"] = $array['additional'].".".$array['name'];
            }
        }
        $main_arr[] = $arr;
    }
}



$data = json_encode($main_arr);

このコードでそれを遅くする方法は素晴らしいでしょう、ありがとう! (このコードは問題なく動作します。これらの文字を置き換えるために何を変更/追加できるかを知りたいだけです)。

更新: strtr() 関数を使用して結果を置き換える方法について、誰かが答えてくれますか? 返信ありがとうございます。

4

1 に答える 1

0

mysql では、* を選択した後にフィールドを手動で選択すると、そのフィールドが上書きされるため、置換を実行するフィールドが 1 つだけで、そのフィールドがわかっている場合は、事前に選択クエリを変更できます (やや不謹慎):

"select 
     *, 
     REPLACE(
         REPLACE(
             REPLACE(`data`.`YOURFIELDNAME`, '&', 'A'),
         ',', 'A'),
     '\'', 'A') 
 from 
     data 
 where a_data_id=".$ID." AND a_discard_data_from!=1";

それらの文字を削除します。これはあまり優雅ではありません.eggyalが指摘したように、フロントエンドでこれを行う方が良いでしょう.

于 2012-08-27T16:26:48.877 に答える