1

ブログ サイトを構築していますが、MYSQL データベースのフィールドの更新に問題があります。PHP を使用するフォームで更新ボタンを押すたびに、MYSQL テキスト フィールドのテキスト文字列の前に余分なスペースが追加されます。PHPコードは次のとおりです。

   //UPDATE TEXT
   $updated_text = $_POST['text'.$the_post['ID'][$n]];
   if ($updated_text != "") {  
     $sql = "UPDATE posts SET TEXT = '".addslashes($updated_text)."' WHERE ID = '".$the_post['ID'][$n]."'";
     $text_result = mysql_query($sql) or die(mysql_error());
   }

ありがとう

4

4 に答える 4

4

この問題が発生する理由はわかりませんが、最初に使用trimして、文字列の先頭と末尾にある白い文字を削除してみてください:

$updated_text = trim($_POST['text'.$the_post['ID'][$n]]);

これで問題が解決する場合は、フォームからこれらの空白を受け取っているためです-そうでなければ...まあ、奇妙です^^


その他の注意事項:

  • データをエスケープして DB サーバーに送信する場合は、DB に固有の関数を使用する必要があります。ここでは、MySQL データベースとmysql_*関数を使用しています。つまり、mysql_real_escape_string代わりに を使用する必要がありaddslashesます。
  • TEXT;に入れているデータをエスケープしています。ただし、 SQL インジェクションを回避するには、where句 でのデータの使用も保護する必要があります。
    • あなたIDがDBのchar/varcharである場合、 mysql_real_escape_stringonも使用することを意味し$the_post['ID'][$n]ます
    • あなたIDがデータベースの整数である場合:
      • 値を囲む引用符は必要ありません。SQL では、引用符は文字列の区切り文字です。整数の区切り文字は必要ありません
      • DB に整数を送信していることを確認する必要があります。たとえば、intval($the_post['ID'][$n])
    • これで問題が変わるわけではありませんが、セキュリティに気を配るのが常に最善です ;-)
于 2009-09-25T18:12:03.783 に答える
2

おそらく、HTMLのテキストエリアタグの問題です-たとえば、インデントされているなど..

于 2009-09-25T18:12:55.010 に答える
0

空の mySQL フィールドが " " を html フォームの値に挿入していることがわかったので、以下を使用しました。

$変数 = トリム($変数," ");

不要なスペースをトリミングします。

于 2009-10-11T00:39:12.917 に答える
0

(コード エディターで) 間にスペースまたは改行がある場合は、それらを削除します。以前も同じ問題がありましたが、現在は修正されています。

于 2011-12-01T03:28:12.250 に答える