我必须拆分这个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);
?>
答案 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,因为你不需要用它来逃避它的东西