数据库脚本总结心路历程

数据库脚本

 

啊最近由于老版网站改版,改了些需求,改了改数据库。所以,要用数据库脚本修改数据库数据。主要是要将原来以VARCHAR形式存的时间戳改为DATETIME类型,且为自动赋值以当前时间。经过一番磨难,最后成果如下。

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "psych";//选择数据库
$table = 'users1';

首先肯定是要先连接数据库啦。Dbname为数据库的名字。Table就是要修改的表。如果要同时修改多个表的话,可以给table变量赋一个一维数组。不过以上只是一些基础准备。Php7.0仿佛之前的mysql函数不能用了,所有要用mysqli对象来连接数据库。如下图。

$mysqli = new mysqli($servername, $username, $password, $dbname);
if (!$mysqli) {
    die('Not connected : ' . mysql_error());
}

运行 php sql.php命令,如果没有报错的话,就已经成功连接啦。

然后如果只是单纯的修改变量的话,只需要下面的代码。

$change_sql = "ALTER TABLE ".$table[$x]." CHANGE ".$name." ".$name." DATETIME DEFAULT CURRENT_TIMESTAMP ";
$change = $mysqli->query($change_sql);
if(!$change){
    echo mysql_error();
}

其中需要注意的是,如果要在sql语句中加入一个变量。如果是上图这样的,那在变量外加上“. $i .”就可以。但如果是下图这样。

$sql = "UPDATE ".$table[$x]." SET ".$name."='".$time."' WHERE id='".$id."'";
$res = $mysqli->query($sql);

在 WHERE id = 后赋变量,则需要用‘”. $i .”’来括起来。不过我也不是很确定啊,具体情况具体分析啦…

但是如果设计到了修改原有数据列,而且这一列本来就有数据时,就要复杂点啦。因为如果简单的将VARCHAR改为DATETIME的话,原有的数据就都清空了。所以要加一些其他的步骤。

$result_sql = "SELECT id,uploadtime FROM " . $table[$x] . "";

$result = $mysqli->query($result_sql);

首先用这几行代码,取出需要改变的那一列的原有数据。当然,如果要修改许多数据表的话,可以加一个while循环。

while($row = $result->fetch_array()){
    $arr[$i] = $row;
    $i++;
}

然后用这个将取出的数据处理为数组的形式,方便处理。

$count = count($arr);

用这个函数计算该数组的条数。

    $j = 0;
    while($j < $count){
        $time = date('Y-m-d H-i-s', $arr[$j][$name]);
   //       $time = date('Y-m-d H-i-s', 1333958440);
        $id = $arr[$j]['id'];
        $sql = "UPDATE ".$table[$x]." SET ".$name."='".$time."' WHERE id='".$id."'";
        $res = $mysqli->query($sql);
        $j++;
    }
    $x++;
}

然后通过while循环来处理数据。进行更新。

如果这样运行还是不对,那就把改数据列中的数据在修改完类型后,把后来的数据处理为空(因为可能会有自动更新的数据),然后再进行更改。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值