2016-08-31 90 views
-3

我需要查询的结果表保存到PHP中的数组变种,所以我可以用它自由以后的查询,如何将mysql查询结果表保存到php数组中?

你可能会问,为什么不让我做的一切在一个查询中,我更喜欢它这种方式,因为它会更清楚地安排在我的脚本中的东西,因为这将是非常复杂的混合查询,但当然,如果我找不到解决方案,我会尽力去做,但让我们先寻求更简单的方法。

以下是我迄今所做的:

$pdo = Database::connect(); 
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $sql = "SELECT * FROM image where ImageFolder not like 'Profile%' order by ImgTimeStamp asc LIMIT 10"; 
    $i = 0; //to use later in loops. 
    $imgdata = array(); 
    foreach ($pdo->query($sql) as $row) 
    { 
     $imgdata[][] = array("ImageID"=>$row['ImageID'],"ImageFolder"=>$row['ImageFolder'],"ImageExtention"=>$row['ImageExtention'],"ImageDescription"=>$row['ImageDescription'],"UserID"=>$row['UserID'],"RatesNumber"=>$row['RatesNumber'],"SumRates"=>$row['SumRates'],"ImgTimeStamp"=>$row['ImgTimeStamp'],"Tags"=>$row['Tags']); 
    } 
    Database::disconnect(); 

然而,当我尝试使用数组与此代码$imgdata[$i]['UserID']它给了我这些错误: Notice: Undefined index: UserID in C:\wamp\www\DrawingArt\Accueil.php on line 34

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: no parameters were bound' in C:\wamp\www\DrawingArt\Accueil.php on line 34

PDOException: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in C:\wamp\www\DrawingArt\Accueil.php on line 34

+0

您在这里没有使用任何偏移量来获得__Undefined offset__错误。很明显,这不是导致该错误的代码。 – Sherif

+0

这是很好的你打开异常,因为现在你知道有一个错误。问题是你不知道它从哪里来,但是可以修复。深入挖掘。 – tadman

+0

@Sherif是的,我只是coppied最后的错误信息,我没有改变'用户ID'4,看看它是否不接受它作为一个字符串,它必须是索引,但后我有同样的错误,我张贴在这里,我注意到它立即但从此失去了互联网连接,这就是为什么我没有早先修复! –

回答

1

当您不指定分配给arr的密钥ay,PHP会根据下一个可用的最高整数键值为您分配一个。每次将赋值中的方括号[]添加到数组中时,都会推送到该数组中的另一个维度。

所以这个代码...

$arr[][] = ["UserID" => "foo"]; 

var_dump($arr); 

给你...

 
    [0]=> 
    array(1) { 
    [0]=> 
    array(1) { 
     ["UserID"]=> 
     string(3) "foo" 
    } 
    } 
} 

公告访问值"foo"在这里你需要$arr[0][0]["UserID"]而不是$arr[0]["UserID"]。如果你想要后者而不是前者,那么在你的循环中赋值时,可以使用$arr[] = ["UserID" => "foo"]

+0

干杯,工作,现在一切使用$ imgdata工作。 (固定剩下一个)非常感谢你:D –

相关问题