简单的查找和替换脚本PHP/MySQL
我一直在努力编写这个简单的脚本,我认为是时候尝试获得一些帮助了。我正在尝试制作一个PHP脚本来与我的数据库通信。我希望能够编写一个数组,其中包含要查找的所有单词以及要替换的所有单词。例如: 数组(查找单词1、替换单词1、查找单词2、替换单词2…等) 我还希望能够指定要查找的表,我也将手动更改它 我将手动填写所有单词,但我希望使其成为动态的,以便在数组长度更改时不会中断 我已经尝试了很多东西,以下是我迄今为止所做的:简单的查找和替换脚本PHP/MySQL,php,mysql,database,Php,Mysql,Database,我一直在努力编写这个简单的脚本,我认为是时候尝试获得一些帮助了。我正在尝试制作一个PHP脚本来与我的数据库通信。我希望能够编写一个数组,其中包含要查找的所有单词以及要替换的所有单词。例如: 数组(查找单词1、替换单词1、查找单词2、替换单词2…等) 我还希望能够指定要查找的表,我也将手动更改它 我将手动填写所有单词,但我希望使其成为动态的,以便在数组长度更改时不会中断 我已经尝试了很多东西,以下是我迄今为止所做的: <?php //set up variables and ent
<?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;
}
?>
我想到的第一件事是,不要使用:
$mstr_array = array(
"find1", "replace1",
"find2", "replace2");
使用:
然后在查询中,您可以简单地使用:
$count = 0;
$sql = "UPDATE `{$tbl_name}` SET `{$col[0]}` = REPLACE(`{$col[0]}`, '{$mstr_keys[$count]}' , '{$mstr_values[$count]}')";
$count++;
我希望这就是您要找的…有一些错误$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());
}
$column=“chairType”;
对于($i=0;$i)您可能会经常听到这一点,但出于安全原因,您应该使用mysqli_*或PDO而不是mysql_*str_u值应该有替换词。感谢Ddorda,这不完全是我想要的,但它给了我一个使用您提供的解决方案的好主意。谢谢。
$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());
}