MySQL编辑值

时间:2011-05-25 11:27:40

标签: php mysql

好的,这里很简单:

我在MySQL中有一个表,我保留了一些国家/地区名称(由用户插入)。 “问题”是一些用户插入了没有第一个大写字母的国家名称。

需要一个脚本(查询+ PHP),它从表中的1列中选择所有值,并应用一个PHP脚本,使每个单词的第一个字母为大写字母,其余为小写字母。

实施例: 在编辑之前:

Name oNe
cOUNTRY
VaLue
value

编辑后:

Name One
Country
Value
Value

我想知道两件事: - >编辑mySQL表中的值的最简单方法 - >最简单的PHP方法来大写脚本中每个单词的第一个字母(空格分隔)

谢谢!

5 个答案:

答案 0 :(得分:3)

您可以使用this功能:

DELIMITER $$

DROP FUNCTION IF EXISTS `ICap`$$

CREATE FUNCTION `ICap`(mystring varchar(1000))
    RETURNS VARCHAR(1000)
BEGIN

DECLARE i INT DEFAULT 1;
DECLARE myc, pc CHAR(1);
DECLARE myoutstring VARCHAR(1000) DEFAULT LOWER(mystring);

WHILE i <= CHAR_LENGTH(mystring) DO
    SET myc = SUBSTRING(mystring, i, 1);
    SET pc = CASE WHEN i = 1 THEN ' ' ELSE SUBSTRING(mystring, i - 1, 1) END;
    IF pc IN (' ', '&', '''', '_', '?', ';', ':', '!', ',', '-', '/', '(', '.') THEN
        SET myoutstring = INSERT(myoutstring, i, 1, UPPER(myc));
    END IF;
    SET i = i + 1;
END WHILE;

RETURN myoutstring;

END$$

DELIMITER ;

之后,您可以检索如下结果:

SELECT 
  ICap(name)
FROM
  MyTable 

或只更新所有行:

UPDATE 
  MyTable
SET 
  name = ICap(name)

答案 1 :(得分:3)

要使用一个sql语句修复数据库,请使用:

UPDATE country_table SET country_name = CONCAT(UCASE(MID(country_name,1,1)),MID(LOWER(country_name),2));

这将使每个国家/地区名称的第一个字母为大写,其余为小写。所有这些都不需要任何PHP。

答案 2 :(得分:1)

- &gt;在mySQL表中编辑值的最简单方法

 UPDATE TABLE SET COL="NEW VALUE" where COL="OLD VALUE";

小心,它将替换COL等于OLd VALUE

的所有行

- &gt;最简单的PHP方法来大写脚本中每个单词的第一个字母(空格分隔)

有一个功能:http://php.net/manual/en/function.ucwords.php

答案 3 :(得分:1)

要编辑数据库中的值,只需从php - http://www.w3schools.com/php/php_mysql_intro.asp运行更新查询(我不知道你的表是如何设计的)。

要将每个单词的第一个字符大写,您可以使用ucwords

答案 4 :(得分:0)

如果你愿意,可以在mysql中完成所有操作:

SELECT CONCAT(UPPER(SUBSTRING(CountryName, 1, 1)), LOWER(SUBSTRING(CountryName FROM 2))) from countries AS properCountryname;

返回的结果集将是您的CountryName字段,首字母大写。

如果你愿意的话,你甚至可以在一个sql查询中进行更新。

如果真的希望php完成这项工作,可以这样:

<?php
set_time_limit(0);
$cnt=0;
$con=mysql_connect('localhost','root','');
mysql_select_db('fakeDB',$con);
$query="SELECT `name`,id FROM countries";
$result=mysql_query($query);

while ($row=mysql_fetch_array($result))
{
  $name= $row["name"];
  $key = $row["id"];
  $field = strtolower($name);
  $array=explode(" ",$name);

  for ($i=0;$i<count($array);$i++)
  {
    $array[$i] = ucfirst($array[$i]);
  }
  $field = implode(" ",$array);
  $query2 = "UPDATE countries SET `name`='$name' where id=$key";
  mysql_query($query2);
  $cnt++;
  }
  echo $cnt." Records updated";
?>

只是一个快速未经测试的东西,但它应该给你一个想法。