我必须拆分这个SQL命令,现在我有一个问题与大量的引号。有人能帮帮我吗?(我试图动态地分配一个文件名到OUTFILE,它必须包括当前时间戳作为文件名的一部分)。谢谢。
<?php
$sql_query = "SELECT @myCommand := concat("'SELECT UNIX_TIMESTAMP( TIMESTAMP( CURDATE( ) , HalfHourTime ) ), 0, 0, 0, 0 '";
$sql_query =$sql_query . into OUTFILE 'C:/wamp/www/myApp/services/csv/filename-", 'DATE_FORMAT(now(),"%Y%m%d-%H%i%s")', '.csv' "' ';
$sql_query =$sql_query . FIELDS TERMINATED BY ',' ';
$sql_query =$sql_query . LINES TERMINATED BY ''n'';
$sql_query =$sql_query .FROM timeintervals_halfhours';
$sql_query =$sql_query . ');";
$sql_query =$sql_query . "PREPARE stmt FROM @myCommand; ";
$sql_query =$sql_query . "EXECUTE stmt;";
define("DATABASE_SERVER", "localhost");
define("DATABASE_USERNAME", "root");
define("DATABASE_PASSWORD", "");
define("DATABASE_NAME", "dataR");
$con = mysqli_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME);
$selected_db = mysql_select_db(DATABASE_NAME, $con);
$result = mysql_query($sql_query);
$temp = mysql_fetch_array($result);
?>
不要分割任何东西,空白是你的朋友(特别是8个字符的前导,缩进增量为4)
$sql = 'SELECT *
FROM `table`
WHERE `table`.`field` = :param';
按照建议,使用预处理语句;向PDO过渡
您可能想要研究使用PHP mysqli::prepare
语句,以避免这种字符串操作。
不使用$sql = $sql . "more"
,您可以使用.=
来连接字符串,如下所示
$sql .= 'more';
你也有一个问题在你的SQL行,你做了一些错误的引用,你想做什么?逃避吗?
$sql_query = "SELECT @myCommand := concat("'SELECT UNIX_TIMESTAMP( TIMESTAMP( CURDATE( ) , HalfHourTime ) ), 0, 0, 0, 0 '";
^
对于这个特定的查询,我建议您使用heredoc构建SQL,因为您不需要用它来转义