数据库脚本
啊最近由于老版网站改版,改了些需求,改了改数据库。所以,要用数据库脚本修改数据库数据。主要是要将原来以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循环来处理数据。进行更新。
如果这样运行还是不对,那就把改数据列中的数据在修改完类型后,把后来的数据处理为空(因为可能会有自动更新的数据),然后再进行更改。