SQL命令分为多个php行

时间:2011-12-05 08:47:19

标签: php mysql prepared-statement

我必须拆分这个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);
?>

3 个答案:

答案 0 :(得分:5)

不要拆分任何东西,空格是你的朋友(特别是8个字符的主角,缩进增量为4

$sql = 'SELECT *
        FROM `table`
        WHERE `table`.`field` = :param';

按照建议,使用准备好的陈述;过渡到PDO

答案 1 :(得分:2)

您可能希望使用PHP mysqli::prepare语句进行调查,以避免这种字符串操作。有关详细信息,请参阅http://www.php.net/manual/en/mysqli.prepare.php

答案 2 :(得分:0)

而不是使用$sql = $sql . "more",您可以使用.=来连接字符串,就像这样

$sql .= 'more';

你的SQL系列中也存在一个问题,你在做引号错误的地方,你想用它做什么?逃脱它?

$sql_query = "SELECT @myCommand := concat("'SELECT UNIX_TIMESTAMP( TIMESTAMP( CURDATE( ) , HalfHourTime ) ), 0, 0, 0, 0 '";
                                          ^

对于这个特定的查询,我建议你用heredoc构建你的SQL,因为你不需要用它来逃避它的东西