2012-03-03 6 views
3
Table 
*------------------------------------------------* 
| id | title | filename   | 
*------------------------------------------------* 

これはテーブルの構造です。私はこのテーブルのすべての単一の行を更新したいと思います。mySQLデータベースのPHPを使用してテーブル内のすべての行を更新する

Filenameのすべてのスペースをアンダースコアに置き換えたいとします。

$new_filename = str_replace(" ", "_", $filename); 

mysql_query("UPDATE table SET Filename = '$new_filename'"); 

これは機能しません。各行は異なるファイル名を持ちます。

+0

ので、各行は別のファイル名を持っており、各行に、あなたはそれらのファイル名のそれぞれにアンダースコアとスペースを交換したいですか? – dldnh

+1

*試してみるとどうなりますか? –

+0

Brianは、ファイル名が設定されていないため、コマンドの後にテーブル内のすべての行のファイル名が空になります – 2by

答えて

12

:あなたが唯一のコマンドを実行して、テーブルのサイズに応じて、これはかなり速い

でなければなりません

mysql_query("UPDATE table SET Filename = REPLACE(Filename, ' ', '_')"); 

この道*編集した

+0

ありがとうございます!何かを検索し、検索に一致するファイル名を持つ行を置き換えたい場合はどうすればよいですか? – 2by

+1

where句を追加するだけです。例: 'WHERE filename' = 'Some file''。詳細:http://dev.mysql.com/doc/refman/5.0/ja/where-optimizations.htmlおよびhttp://dev.mysql.com/doc/refman/5.0/en/mysql-indexesを参照してください。 html –

+0

それは素晴らしい方法ですが、私は一般的な答えにもっと興味があります。もしそうした変化がそれほど単純でないならばどうでしょうか?たとえば、データベースエントリには、ビデオの埋め込みコードと他のほとんどのものを含む短いHTMLスニペットがあります。 その埋め込みコードをHTML5の苦情に変更し、それらのヌーマーをf(元の番号)に変更したいと思います。これは、私はPHPを介してクエリをし、その行を更新する必要があると思います。 – iankit

0

これは、mysql_connect()を使用してデータベースに接続していれば動作します。

これをワンオフで実行しているのであれば、解決策はありますが、ユーザーがある種のフォームでこれを行うことを許可している場合は、SQLインジェクションと呼ばれるセキュリティ上の欠陥があります。変数$ filenameがユーザによってサブミットされた場合、それらはクエリを終了して新しいものを開始することができます。 unsanitisedデータを決してMySQLクエリに配置しないでください。

このput $ filenameをmysql_real_escape_stringに置き換えるか、MySQLiまたはPDOが提供する準備済みの文を使用する方がよいでしょう。

私は単にこれだろう
3

まず答えは方法ですがより良い:)

あなたのファイル名はすべての行に同じですか?そうでなければ、このコードはすべてのファイル名を1つの名前に置き換えます。 forループが必要です。テーブルからデータを取得し、更新します。このよう

$query = "SELECT id, filename FROM table"; 
    $result = mysql_query($query); 
    if($result){ 
     $num = mysql_numrows($result); 
     $i=0; 
     while ($i < $num) { 
      $new_filename = str_replace("_", " ", mysql_result($result,$i,"filename")); 
      $id = mysql_result($result,$i,"id"); 
     mysql_query("UPDATE table SET filename = '$new_filename' WHERE id='$id'"); 
     } 
    } 
+0

-1 WHERE id = 'mysql ... – Gabriel

+0

Orlyの近くに壊れたコードがありますか?どうしましたか? –

+0

まだですか?私はそれを編集したと思った? –

関連する問題