在php mysql中创建列数等于当月天数的表的查询

在php mysql中创建列数等于当月天数的表的查询,php,mysql,Php,Mysql,表结构将像 day1、day2、…..、day31(对于10月(10日),一个月有31天)您应该使用以下方法: $month='10'; $year='2012'; $d=cal_days_in_month(CAL_GREGORIAN,$month,$year); $month='10'; $year='2012'; $d=每月的计算天数(计算公历,$month,$year); $sql='CREATE TABLE`TABLE_name`('; 对于($i=1;$i可能不是最优雅的解决方案

表结构将像

day1、day2、…..、day31
(对于10月(10日),一个月有31天)

您应该使用以下方法:

$month='10';

$year='2012';

$d=cal_days_in_month(CAL_GREGORIAN,$month,$year);
$month='10';
$year='2012';
$d=每月的计算天数(计算公历,$month,$year);
$sql='CREATE TABLE`TABLE_name`(';

对于($i=1;$i可能不是最优雅的解决方案,但它允许一些灵活性:

$month = '10';
$year = '2012';
$d = cal_days_in_month(CAL_GREGORIAN, $month, $year);
$sql = 'CREATE TABLE `table_name` (';
for ($i = 1; $i <= $d; $i ++)
{
    $sql .= '`day' . $i . '` int(2) DEFAULT NULL';
    if ($i != $d)
        $sql .= ',';
}
$sql .= ') DEFAULT CHARSET=latin1';
mysql_query($sql);
函数getQuery($days、$tableName、$columnName、$columnLength、$columnType='VARCHAR'){ $query='CREATE TABLE'.$tableName'.(';
对于($i=1;$i创建表
TABLE\u name
(创建表
TABLE\u name
)(day1 int(2)默认空创建表
TABLE\u name
(day1 int(2)默认空,day2 int(2)默认空创建表
TABLE\u name
(day1 int(2)默认空,day2)默认空,day3 int(2)默认为空创建表
表\u名称
(第1天int(2)默认为空,第2天int(2)默认为空,第3天int(2)默认为空,第4天int(2)默认为空------------结果如下“创建表\u名称”不能重复两次,因为在代码中它没有在循环中使用。请检查您是否使用相同的代码。结果是:创建表
TABLE\u name
day1
int(2)默认空值,
day2
int(2)默认空值,
day3
int(2)默认空值,
day4
int(2)默认空值,
day5
int(2)默认空值,
day6
int(2)默认空值,
day7
int(2)默认空值,
day8
int(2)默认空值,
day9
int(2)默认空值,
day10
int(2)默认空值,
day11
int(2)默认空值,
day12
int(2)默认空值,
day13
int(2)默认为空,
day14
int(2)默认为空,
day15
int(2)默认为空,
day16
int(2)默认为空,
day31
int(2)默认为空)默认字符集=1
function getQuery($days, $tableName, $columName, $columnLength, $columnType = 'VARCHAR'){
    $query = 'CREATE TABLE ' . $tableName . ' (';

    for($i = 1; $i <= $days; $i++){
        $query .= $columName . $i . ' ' . $columnType . '(' . $columnLength . ') NOT NULL, ';
        if($i == $days){
            $query .= $columName . $i . ' ' . $columnType . '(' . $columnLength . ') NOT NULL)';
        }
    }

    return $query;
}