存储mysql数据的数组的PHP数组
谢谢你,飞蛾 JensV可能的解决方案: 我已将代码更新为存储mysql数据的数组的PHP数组,php,mysql,arrays,Php,Mysql,Arrays,谢谢你,飞蛾 JensV可能的解决方案: 我已将代码更新为 $element[$counter["Element_property_I_want"]] $pdo=newpdo('mysql:host=localhost;dbname=chemistry\u data\u base','root',''); $stmt=$pdo->准备(‘从周期表中选择原子序数、元素质量、元素群、元素周期、化学符号、元素名称、元素状态、金属类型、元素构型、氧化状态、熔点、沸点、电离能、电子亲和力1、电子亲和力2
$element[$counter["Element_property_I_want"]]
$pdo=newpdo('mysql:host=localhost;dbname=chemistry\u data\u base','root','');
$stmt=$pdo->准备(‘从周期表中选择原子序数、元素质量、元素群、元素周期、化学符号、元素名称、元素状态、金属类型、元素构型、氧化状态、熔点、沸点、电离能、电子亲和力1、电子亲和力2、电负性、原子半径,其中原子序数介于1和118’);
$data=$stmt->fetchAll(PDO::FETCH_ASSOC);
$indexedata=[];
foreach($行数据){
$indexedata[$row['Atomic_Number']]=$row;
}
回声';
var_dump($数据);
//按原子编号访问阵列
echo$indexedata[42][‘原子序数’];
?>
我得到的新错误是:
数组(0){
}
注意:第228行C:\xampp\htdocs\data\u element\periodic\u table.php中未定义的偏移量:42
注意:第231行C:\xampp\htdocs\data\u element\periodic\u table.php中未定义的偏移量:42
:第228行和第231行都是回音线
经过一些实验后,我发现数组似乎是空的,没有填充,但我很可能是错的。您可以一次获取所有数据(特别是因为mysql查询非常昂贵,应该避免在可能的情况下迭代同一查询) 做一些类似的事情:
$stmt = $pdo->prepare('SELECT f1,f2,f3, etc... FROM table WHERE id BETWEEN 1 AND 133');
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
现在,您的所有数据都在$data
中,可以使用$data[42]['f2']
请注意,$data
数组是0索引的!因此$data[5]['id']
可能是6
重新编制数据索引 由于您希望通过原子序数对数组进行索引,因此需要重新对数组进行索引。最简单的方法是使用正确的索引创建一个新数组:
// ... fetch the data into $data
$indexedData = [];
foreach ($data as $row) {
$indexedData[$row['AtomicNumber']] = $row;
}
// Access your array by the AtomicNumber
echo $indexedData[42]['someKey'];
另外,为了在调试时提供帮助,请使用var\u dump
或print\r
,如果您在webbrowser中查看,可以添加
标记以获得良好的格式设置。例如:
echo '<pre>';
var_dump($data); // or var_dump($indexedData);
while ($counter < 119)
{
$a[$counter] = $counter;
$counter++;
}
$counter = 1;
echo';
var_dump($data);//或var_dump($indexedData);
为要填充数据的每个空白创建一个条目:
var_dump( ${$a[1]}[1]. "<br>");
while($counter<119)
{
$a[$counter]=$counter;
$counter++;
}
$counter=1;
从MySQL数据库中选择数据并将其插入阵列内部的阵列:
$statement=$pdo->prepare(“从数据库中选择xyz,其中xyz=?”;
而($counter<119)
{
$statement->execute(数组($counter));
${$a[$counter]}[1]=$statement->fetch();
$counter++;
}
以下是如何调用阵列:
var_dump(${$a[1]}[1]。“
”;
警告!
这非常挑剔,而且很难正确设置。我不会建议这样做,因为几乎所有其他方法都比较容易。如果您认为这是解决问题的唯一方法,那么您就错了。还有其他方法更难看,代码更多,但更可靠。因此您正在创建118个阵列(
$a1-$a118
),将它们放入另一个数组中,生成118条select语句将结果放入另一个118长的数组中,只是为了回显te结果?似乎有点过头了。如果您遇到新错误,请提出新问题,不要在同一时间问两个问题,就像表中没有与condition@JensV是的,问题出在哪里ms将为数组赋值,因为在进一步测试后,检索似乎工作正常。目前我正在测试是否可以使用变量,但作为数组。thx我将尝试,这听起来可能正是我要寻找的。@如果它有助于向上投票并接受,我会很感激的。是的。我仍在等待在运行它之后,FETCH_ASSOC似乎还需要()来处理它,但当我将它更改为FETCH_ASSOC()时,它会给我一个不同的错误,因此我正在阅读FETCH_ASSOC手册以找出解决方法。您收到了什么样的错误?()那里不需要
,因为PDO::FETCH_ASSOC是一个常量。请检查sql语句是否有任何错误。
while ($counter < 119)
{
$a[$counter] = $counter;
$counter++;
}
$counter = 1;
$statement = $pdo->prepare("SELECT xyz FROM db WHERE xyz = ?");
while ($counter < 119)
{
$statement->execute(array($counter));
${$a[$counter]}[1] = $statement->fetch();
$counter++;
}
var_dump( ${$a[1]}[1]. "<br>");