Не удается вывести таблицу MySQL через веб-форму

#php #html-table #output

#php #html-таблица #вывод

Вопрос:

Я совершенно новичок в PHP и пытаюсь написать простую веб-форму, которая отслеживает некоторый инвентарь и кто его заимствовал. У меня установлена LAMP на Ubuntu 13.10 с PHP 5.5. У меня не было проблем с написанием скрипта, который принимает информацию о клиенте и записывает в базу данных MySQL, но я застрял на получении скрипта, который выводит его. Просматривая некоторые примеры и читая, у меня есть это до сих пор:

  <?php
ini_set("display_errors","on");
$dsn='mysql:host=localhost;dbname=inventory_form';
$username="****";
$password="*****";
$database="inventory_form";

try
    {
    $link=new PDO($dsn, $username,$password);
    echo 'Connection is established';
    }
catch (PDOException $e)
    {
    $error_message=$e->getMessage();
    echo "<h1>An error occurred: $error_message</h1>";
    }
$query="SELECT * from Inventory";
$result=$link->query($query);
/*/
$num=mysql_num_rows($result);


echo "<b><center>Database Output</center></b>";

?>
<table border="2" cellspacing="2" cellpadding="2">
<tr> 
<th><font face="Arial, Helvetica, sans-serif">Name</font></th>
<th><font face="Arial, Helvetica, sans-serif">Equipment Borrowed</font></th>
<th><font face="Arial, Helvetica, sans-serif">Service Tag</font></th>
<th><font face="Arial, Helvetica, sans-serif">Date Borrowed</font></th>
</tr>

<?php
$i=0;
while ($i < $num) {
$first=mysql_result($result,$i,"FName");
$last=mysql_result($result,$i,"LName");
$Eq_Brwd=mysql_result($result,$i,"Eqpmnt_Brwd");
$Svc_tag=mysql_result($result,$i,"Service_Tag");
$Date_Bwd=mysql_result($result,$i,"Date_Taken");
?>

<tr> 
<td><font face="Arial, Helvetica, sans-serif"><?php echo "$first $last"; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo "$Eq_Brwd"; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo "$Svc_tag"; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo "$Date_Bwd"; ?></font></td>
</tr>
<?php
  $i;
} 
echo "</table>";


?>
 

Все, что я получаю, это сообщение об установлении соединения. Одна из проблем, которую я знаю, заключается $num в том, что переменная не получает возвращаемое значение my_sql_num_rows .Я знаю, что должен быть более простой способ вывода информации о таблице. Любые предложения или лучший способ для этого приветствуются.

Ответ: Теперь все просто. У меня есть это:

 <?php
ini_set("display_errors","on");
$dsn='mysql:host=localhost;dbname=inventory_form';
$username="alank";
$password="alank";
$database="inventory_form";

try
    {
    $link=new PDO($dsn, $username,$password);
    echo 'Connection is established';
    }
catch (PDOException $e)
    {
    $error_message=$e->getMessage();
    echo "<h1>An error occurred: $error_message</h1>";
    }
$query="SELECT * from Inventory";
$result=$link->query($query);


echo "<b><center>Database Output</center></b>";

?>
<table border="2" cellspacing="2" cellpadding="2">
<tr> 
<th><font face="Arial, Helvetica, sans-serif">Name</font></th>
<th><font face="Arial, Helvetica, sans-serif">Equipment Borrowed</font></th>
<th><font face="Arial, Helvetica, sans-serif">Service Tag</font></th>
<th><font face="Arial, Helvetica, sans-serif">Date Borrowed</font></th>
</tr>

<?php
while ($row = $result->fetch()) {
    echo '$row';

}

?>
 

Но все равно ничего хорошего. Вывод:

Установлено соединение
Вывод базы данных
$row $row$row$row $row$row$row
Имя строки Оборудование заимствовано Сервис Тег Дата заимствовано

Любой совет. Извините за так много вопросов. Но это то, как вы учитесь. Ценю ваше терпение.

Комментарии:

1. Вы не ссылались ни на одну из возвращаемых переменных из PDO. Кроме того, вы смешиваете расширения PDO и mysql_* ( mysql_num_rows ), которые несовместимы.

Ответ №1:

 $query="SELECT * from Inventory";
$result=$link->query($query);
while ($row = $result->fetch()) {
    var_dump($row);
}
 

вы увидите, как работает PDO.

Функции PDO и функции mysql_ * принадлежат двум разным расширениями. вы их перепутали.

Комментарии:

1. Извините, но где вы помещаете это в код. Смотрите ответ выше.