2016-09-03 1 views
0

私は1,50,000以上のエントリのデータベースを持っています。それは州名、地区名、オフィス名などのような列を持っています。今度は、州名、地区名、オフィス名で各行のPHP Soundexでデータベース全体を更新します。 各行には、state_soundex、office_name_soundex、およびdistrict_soundexの列があります。 私はこのようにデータベース全体を更新するPHPスクリプトを実行したいと思います。 状態名をとり、soundex('state_name')を適用してstate_soundex列に入れ、同じものが地区名とオフィス名になります。 これは私がこれまでに動作しない持っているものである -私はいくつかの特定のパラメータに基づいてMySQLデータベースの列を更新するためにPHPスクリプトを実行できますか?

// database connection working alright 

$query = "SELECT office_name, state, district FROM pincodes"; 
$result = mysqli_query($mysql, $query); 

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 

    $state_name = $row['state']; 

    $soundex = soundex($state_name); 

    $q = "UPDATE pincodes SET state_soundex = '$soundex' WHERE state = '$state_name'"; 
    $r = mysqli_query($mysql, $q); 

} 

しかし、それは更新していません。助けてください。私はそれをする方法を理解することができません。 スクリプトを一度実行して完全に更新するだけで済みます。それでおしまい。

ありがとうございます。

+1

あなたはおそらく私が達成したい何@RamRaider 1つのSQL文、 'UPDATEのPINコードのは、SETのstate_soundex = SOUNDEX(状態)' – RamRaider

+0

事務所名のユーザーの検索の場合には、それを間違えていることであることを行うことができますmysqlの何も返さない。だから私はそれのためのsoundexを格納し、オフィス名とsoundex_office_nameとの一致のユーザー入力を取るしたい。私の地域のように、オフィス名として「Bohru」を使用する人もいれば、「Baharu」を使用する人もいます。データベースには値として「baharu」があります。しかし、両方とも同じサウンドデックスを持っています。だから、soundexとのマッチングは結果をユーザのタイプ "bohru"に与えます。 それは良いアイデアだと思いますか、他のapprocahを取るべきですか? ありがとうございます。 –

+0

'like'とおそらく'おそらく 'levenshtein'と一緒に' soundex'を使うのが助かります - 検索ボックスの入力フィールドに 'datalist'を使用する場合、ユーザが選択できるKnown事務所のリストより良い/より信頼性の高い – RamRaider

答えて

2

ループと内部クエリで複雑すぎるものではなく、単に同じSQL文を使用して同じことを達成できます。

$query = "UPDATE `pincodes` SET `state_soundex`=soundex(`state`)"; 
$result = mysqli_query($mysql, $query); 
+1

MySQLがこの機能を持っていることを教えてくれてありがとう。 MySQLとPHPのsoundexの実装は同じではありません。 OPは、同じ入力文字列のsoundex結果が異なることに注意する必要があります。 – BeetleJuice

+0

ありがとう@ramraider。私は物事を過度に複製し、どこにも持ち込まないように1時間以上費やしました。 mysqlにもこの機能があることは知らなかった。 –

+0

@BeetleJuice私が達成したいのは、ユーザーがオフィスの名前を検索してスペルミスをした場合、mysqlは何も返さないということです。だから私はそれのためのsoundexを格納し、オフィス名とsoundex_office_nameとの一致のユーザー入力を取るしたい。私の地域のように、オフィス名として「Bohru」を使用する人もいれば、「Baharu」を使用する人もいます。データベースには値として「baharu」があります。しかし、両方とも同じサウンドデックスを持っています。だから、soundexとのマッチングは結果をユーザのタイプ "bohru"に与えます。 それは良いアイデアだと思いますか、他のapprocahを取るべきですか? ありがとうございます。 –

関連する問題