SQL命令分割成多个php行


SQL command split into multiple php lines

我必须拆分这个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,因为您不需要用它来转义