如何:echo mysql_query($ show_tables)到标准输出?

时间:2012-02-22 10:17:51

标签: php mysql

我有这个PHP脚本每天由cronjob运行:

mysql_connect("$host", "$username", "$password")or die("Could not connect to the database: " . mysql_error()) ;
mysql_select_db("$db_name") or die("Could not select database: " . mysql_error()) ;

//create backup table with current date concatenated to the table name
$create_table = "set @c=concat('create table    rc_profile_table_backup_',date_format(now(),'%Y_%m_%d'))";
$prepare = "prepare stmt from @c";
$execute = "execute stmt";
$deallocate = "deallocate prepare stmt";

mysql_query($create_table);
mysql_query($prepare);
mysql_query($execute);
mysql_query($deallocate);

echo $sql11 = "insert rc_profile_table_backup_".mktime(date("y"),date("m"),date("d"))."select * from   rc_profile_table"."\n";

我怎样才能实现上面的插入?我在cronjob中运行此脚本,因此它必须使用当前日期获取表名并执行插入操作。我怎么知道现在的日期?

感谢

1 个答案:

答案 0 :(得分:2)

在PHP中写入stdout

您可以使用流包装器php://stdout或预定义的STDOUT(这是首选方式):

fwrite(STDOUT, "My text to write to stdout");

参考:http://php.net/manual/en/wrappers.php.php

将代码的一些逻辑移到php

你的php看起来像这样:

$tableName = "rc_profile_table_backup_" . date("Y_m_d");
mysql_query("CREATE TABLE `{$tableName}` ..."); // insert your schema here
mysql_query("INSERT INTO `{$tableName}` SELECT * FROM `rc_profile_table`");

您的代码的其他问题

不要使用不必要的字符串插入:

("$db_name")

可以写成

($db_name)

准备,执行和解除分配的整个过程应该使用适当的mysql类(mysqli,PDO)而不是你自己的代码。他们为你做了所有这些工作。