Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存储mysql数据的数组的PHP数组_Php_Mysql_Arrays - Fatal编程技术网

存储mysql数据的数组的PHP数组

存储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

谢谢你,飞蛾

JensV可能的解决方案:

我已将代码更新为

$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>");