尝试使用foreach使用php创建动态html元素时出错
当我尝试使用PHP在HTML中动态创建一些框时,会出现以下错误: 为foreach()提供的参数无效 这是我的密码:尝试使用foreach使用php创建动态html元素时出错,php,mysql,foreach,runtime-error,Php,Mysql,Foreach,Runtime Error,当我尝试使用PHP在HTML中动态创建一些框时,会出现以下错误: 为foreach()提供的参数无效 这是我的密码: <?php $sql = 'call getservers()'; $retval = mysqli_query( $conn,$sql ); if(! $retval ) { die('Could not get data.'); } while($row = mysqli_fetch_array($retval))
<?php
$sql = 'call getservers()';
$retval = mysqli_query( $conn,$sql );
if(! $retval ) {
die('Could not get data.');
}
while($row = mysqli_fetch_array($retval)) {
$server_array = $row['result'];
}
foreach($server_array as $value) {
echo <<<HEREDOC
<div class="card card-custom">
<div class="card-header">
<div class="card-title">
<span class="card-icon">
<i class="fas fa-server text-primary text-primary"></i>
</span>
<h3 class="card-label">Server 1
<small>192.168.1.1</small></h3>
</div>
<div class="card-toolbar">
<a href="#" class="btn btn-sm btn-icon btn-light-danger mr-2">
<i class="flaticon2-drop"></i>
</a>
<a href="#" class="btn btn-sm btn-icon btn-light-success mr-2">
<i class="flaticon2-gear"></i>
</a>
<a href="#" class="btn btn-sm btn-icon btn-light-primary">
<i class="flaticon2-bell-2"></i>
</a>
</div>
</div>
<div class="card-body">No Description Given.</div>
</div>
HEREDOC;
}
?>
(MySql查询正确返回JSON数组)
任何帮助都将不胜感激。您应该
json\u解码($server\u array,true)
以获得可循环使用的关联数组
i、 e
$server\u array
被定义为一个字符串,然后在while
-循环的每次迭代中覆盖该字符串,因此在最后,它将只包含最后一条记录(很可能不是数组)。但是,一个更好的解决方案可能是完全删除foreach
,并将HTML放在中,而直接循环,不要有两个包含相同数据的循环。替换echo@HassanALi-这会改变/解决什么问题?请尝试一下,然后告诉我。@MagnusEriksson MySQL查询返回JSONArray,其中包含表中的所有记录。结果只有一行,其中包含JSONArray。下面是一个带有示例数据的结果:[{“服务器名称”:“测试服务器1”,“服务器ip”:“192.168.1.2”,“服务器主机名”:“testserver1.example.com”},{“服务器名称”:“测试服务器2”,“服务器ip”:“192.169.1.105”,“服务器主机名”:“testserver2.example.com”}]
<?php
$server_array = '[{"server_name": "Test Server 1", "server_ip": "192.168.1.2", "server_hostname": "testserver1.example.com"},{"server_name": "Test Server 2", "server_ip": "192.169.1.105", "server_hostname": "testserver2.example.com"}]';
$server_array = json_decode($server_array, true);
foreach($server_array as $value) {
foreach($value as $item) {
echo <<<HEREDOC
$item;
HEREDOC;
}
}