0

我的代码有什么问题?我的目的是创建一个表格,将行输入到具有可变行数的 html 表格中。我的代码返回警告:

为 foreach() 提供的参数无效

<?php
{
$user=$_SESSION['username'];
$pass=$_SESSION['password'];
}
$con = mysql_connect("localhost","****","*****");
var_dump($con);

if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("****", $con);
$result = mysql_query("select * from `order` WHERE username='$user'");

while ($row = mysql_fetch_array($result))
{
$html_table = '<table border="1 cellspacing="0" cellpadding="2""><th>Company     Symbol&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><th>Amount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    </th><th>Actual Stockprice&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><th>Old Stockprice&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><th>Cost&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><th>Profit/loss&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><tr>';
foreach($result as $row) {
  $html_table .= '<tr><td>' .$row['company']. '</td><td>' .$row['amount'].         '</td><td>' .$row['stock']. '</td></tr>';
}


$html_table .= '</tr></table>'; 


$html_table = str_replace('<tr></tr>', '', $html_table);

echo $html_table;        


 } 

?>

任何帮助都会很棒。

4

4 回答 4

2

我认为这也可能是一个解决方案:

echo '<table border="1" cellspacing="0" cellpadding="2">';
echo '<th>Company Symbol</th><th>Amount</th><th>Actual Stockprice</th><th>Old Stockprice</th><th>Cost</th><th>Profit loss</th><tr>';
while ($row = mysql_fetch_array($result)) {
    echo '<tr>';
    foreach($row as $value) {
        echo "<td>$value</td>";
    }
    echo '</tr>';
}
echo '</table'>;

另外,我会考虑使用 PDO 或 mysqli_,因为 mysql_ 已贬值且不安全。

于 2012-10-26T20:29:59.133 回答
0

你的 foreach 循环坏了,应该是

foreach($row as $a_variable_name_that_is_not_result) {
  //stuff
}

此外,如果您计划输出可变数量的,则需要将<tr>标签移到foreach循环之外。

于 2012-10-26T20:24:51.967 回答
-1

试试这个

$html_table = '<table border="1" cellspacing="0" cellpadding="2"><th>Company     Symbol&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><th>Amount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    </th><th>Actual Stockprice&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><th>Old Stockprice&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><th>Cost&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><th>Profit/loss&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th><tr>';
while ($row = mysql_fetch_array($result))
{
  $html_table .= '<tr><td>' .$row['company']. '</td><td>' .$row['amount'].         '</td><td>' .$row['stock']. '</td></tr>';
}

$html_table .= '</tr></table>'; 
于 2012-10-26T20:26:55.910 回答
-1

首先,$reuslt 是一个 PHP 资源,从

mysql_query("select * from `order` WHERE username='$user'");

http://php.net/manual/en/function.mysql-query.php

您已经在此处引用了 $row

while ($row = mysql_fetch_array($result))

所以只需摆脱 foreach 循环。我完全看不出它的目的。

除此之外,肯定必须对最终标记的生成方式进行一些更改,因为它将“损坏”/无效

于 2012-10-26T20:27:29.537 回答