2014-03-05 26 views
0

赋值我有一个MySQL SELECT查询返回如下:使用返回的行作为PHP变量名,并从CSV

$getDbVars = "SELECT `var_code` FROM `campaign_variables`"; 

$name 
$videoURL 
$leadLogo 
$brand 
$competitor 

我也有一个CSV,它的列是与上面相同。当然,CSV每列保存数百行。

andres,http://somewhere.com/vid1.mp4,http://somewhere.com/logo1.png,brand1,andres-competitor 
allan,http://somewhere.com/vid5.mp4,http://somewhere.com/logo5.png,brand5,allan-competitor 
alexander,http://somewhere.com/vid7.mp4,http://somewhere.com/logo7.png,alexander-competitor 

首先,我需要使用任何sql查询返回作为变量名称。

然后,我需要能够循环访问CSV,并且每次都将值分配给这些变量。因此,例如,在循环的第一次扫描:

$name = 'andres'; 
$videoURL = 'http://somewhere.com/vid1.mp4'; 
$leadLogo = 'http://somewhere.com/logo1.png'; 
$brand = 'brand1'; 
$competitor = 'andres-competitor'; 

等,为CSV的每一行。

请让我知道,如果上述没有多大意义。我必须这样做的原因是因为有些情况下,同一个查询将返回不同数量的行。因此,会有不同的“变量名称”。好的是,CSV将始终具有与查询返回的行数相同的列数。

+0

请详细说明。显示一些示例csv-rows和选择查询以及结果应该是什么样子。 –

+1

'list($ name,$ videoURL,...)= mysql_fetch_assoc($ result)',基本上。你想要的是基本的PHP和数据库操作。你可能只是在反思一切。 –

+0

@TobiasKun谢谢,我添加了更多细节 – jeffimperial

回答

0

我认为最好的方式实现这一目标是数组:

$keys = array("name", "videoURL", "leadLogo", "brand", "competitor"); 
$csv = $your_csv_as_array_data; 

$data = array(); 
foreach($csv as $row) { 
    $temp = array(); 
    for($i = 0; $i < count($keys); $i++) { 
     $temp[$keys[$i]] = $row[$i]; 
    } 
    $data[] = $temp; 
} 

这会给你下面的数组:

array (
    [0] => array(
     "name" => "...", 
     "videoURL" => "...", 
     "leadLogo" => "...", 
     "brand" => "...", 
     "competitor" => "..." 
    ), 
    [1] => array(
     "name" => "...", 
     "videoURL" => "...", 
     "leadLogo" => "...", 
     "brand" => "...", 
     "competitor" => "..." 
    ), 
    [2] => array(
     "name" => "...", 
     "videoURL" => "...", 
     "leadLogo" => "...", 
     "brand" => "...", 
     "competitor" => "..." 
    ) 
    . 
    . 
    . 
) 
相关问题