简单查找和替换脚本PHP / MySQL

时间:2012-09-07 22:35:52

标签: php mysql database

我一直在试着这个简单的脚本,并认为是时候尝试并得到一些帮助了。我正在尝试创建一个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;
}

?> 

任何帮助将不胜感激!感谢

2 个答案:

答案 0 :(得分: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++;

我希望这就是你要找的......

答案 1 :(得分: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的所有行。