2011-12-04 112 views
0

下面的SQL工程100%,如果我在phpMyAdmin运行它,但如果我尝试使用它在PHP中的PHP文件准备语句,使用:不能让MySQL存储过程到PHP

$stmt = $mysqli->prepare("..."); 
$stmt->execute(); 
$stmt->close(); 

我得到一个错误。我需要知道如何来包装这个SQL到PHP,因为我必须使用

SELECT @myCommand := concat("SELECT UNIX_TIMESTAMP(TIMESTAMP(CURDATE() , HalfHourTime)), 0, 0, 0, 0 
into OUTFILE 'C:/wamp/www/myApp/services/csv/filename-", DATE_FORMAT(now(),'%Y%m%d-%H%i%s'), '.csv' "' 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
FROM timeintervals_halfhours 
"); 
PREPARE stmt FROM @myCommand; 
EXECUTE stmt; 

它是基于on the post by Frank Flynn on October 6 2006 11:05pm,他说,一个PHP文件:“如果你希望使用OUTFILE或DUMPFILE具有可变的文件名你不能简单地把它放在适当的位置 - MySQL不会解析名称。“

在此先感谢。

+0

而错误是......? –

回答

0

问题是mysqli不支持单个调用中的多语句执行。
看一看http://php.net/manual/en/mysqli.multi-query.php

+0

错误是:我无法动态分配OUTFILE的文件名(我想将当前时间作为文件名的一部分)。我尝试分解成两个单独的查询: – user983522

+0

例如在两个查询中(不起作用): require_once('connection.php'); ('C:/ wamp/www/myApp/services/csv /',NOW(),'.csv')AS文件名“; $ r1 = mysqli_query($ dbc,$ q1); $ row = mysqli_fetch_array($ r1,MYSQLI_ASSOC); //获取第一个查询的行\t \t //设置第二个查询的变量 $ file = $ row [“filename”]; $ Q = “SELECT UNIX_TIMESTAMP(TIMESTAMP(CURDATE(),HalfHourTime)),0,0,0,0 INTO OUTFILE $文件 场TERMINATED BY '' LINES TERMINATED BY '\ n' FROM timeintervals_halfhours”; $ r = mysqli_query($ dbc,$ q); – user983522