好的,这里很简单:
我在MySQL中有一个表,我保留了一些国家/地区名称(由用户插入)。 “问题”是一些用户插入了没有第一个大写字母的国家名称。
需要一个脚本(查询+ PHP),它从表中的1列中选择所有值,并应用一个PHP脚本,使每个单词的第一个字母为大写字母,其余为小写字母。
实施例: 在编辑之前:
Name oNe
cOUNTRY
VaLue
value
编辑后:
Name One
Country
Value
Value
我想知道两件事: - >编辑mySQL表中的值的最简单方法 - >最简单的PHP方法来大写脚本中每个单词的第一个字母(空格分隔)
谢谢!
答案 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方法来大写脚本中每个单词的第一个字母(空格分隔)
答案 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";
?>
只是一个快速未经测试的东西,但它应该给你一个想法。