2

私はこの単純なスクリプトをプラグインしてきましたが、助けを求める時が来たと思います。データベースと通信するためのPHPスクリプトを作成しようとしています。検索するすべての単語とそれらを置き換えるすべての単語を含む配列を記述できるようにしたいと思います。例:

配列(find_word1、replace_word1、find_word2、replace_word2 ....など)

また、調べるテーブルを指定できるようにしたいので、これも手動で変更します。

すべての単語を手動で入力しますが、配列の長さが変更されても壊れないように動的にしたいです。

私は多くのことを試みました、そしてこれが私がこれまでに持っているものです:

    <?php

//set up variables and enter your credentials here
$dbname = "name"; 
$dbhost = "localhost";
$dbpass = "password";
$dbuser = "user";
$tbl_name = "Chairs";
//set up your master array! Array goes in this or
$mstr_array = array(
                "find1", "replace1",
                "find2", "replace2");

//connect to database
$con = mysql_connect($dbhost, $dbuser, $dbpass) or die('no connection:'  . mysql_error());
$db = mysql_select_db($dbname) or die ('cant select db: ' . mysql_error());

// reteive each column
$sql = "SHOW COLUMNS FROM `{$tbl_name}`";
$res = mysql_query($sql) or  die ('could not get columns: ' . mysql_error());
$find = 0;
$replace = 1;

while ($col = mysql_fetch_array($res)) {

        $sql = "UPDATE `{$tbl_name}` SET `{$col[0]}` = REPLACE(`{$col[0]}`, '{$mstr_array[$find]}' , '{$mstr_array[$replace]}')";
        $find = $find + 2;
        $replace = $replace + 2;
}

?> 

どんな助けでも大歓迎です!ありがとう

4

2 に答える 2

1

私の頭に浮かぶ最初のことは、使用する代わりに次のことです。

$mstr_array = array(
                "find1", "replace1",
                "find2", "replace2");

使用する:

$mstr_keys = array('find1', 'find2', ....);
$mstr_values = array('replace1', 'replace2', ....);

次に、クエリで次のように使用できます。

$count = 0;
$sql = "UPDATE `{$tbl_name}` SET `{$col[0]}` = REPLACE(`{$col[0]}`, '{$mstr_keys[$count]}' , '{$mstr_values[$count]}')";
$count++;

それがあなたが探していたものだといいのですが...

于 2012-09-07T22:57:19.853 に答える
0

いくつかのエラーがあります。$col[0] は、列名ではなく、列の値を返します。このような更新クエリを使用している場合は、次のような設定値としての値ではなく、列名を定義する必要があります。

SET column_name = REPLACE(column_name, ...

ただし、列名がわかっている場合、または変数として設定できる場合は、次のものが必要です。

$column = "chairType";
for($i=0;$i<count($mstr_array);$i++){
    $find=$mstr_array($i++);
    $replace = $mstr_array($i);

    $sql = "UPDATE '{$tbl_name}' SET '{$column}' = REPLACE('{$column}',$find,$replace)
    $mysql_query($sql) or die(mysql_error());
}

ただし、これにより、列が $find に一致するすべての行が置き換えられることに注意してください。

于 2012-09-07T23:00:50.083 に答える