В школе мой учитель рассказал мне много о кодировании на PHP с помощью БАЗА ДАННЫХ POSTGRES. Но когда я начал использовать сервер MYSQLI, я не мог многое сделать.PHP MYSQLI fetch Ошибки
Прежде всего функции. Мой учитель сказал мне, чтобы сделать этот тип функции
$rows = getBuildings();
if (count($elenco) == 0) {
print "<hr> No buildings here </hr>";
} else {
?>
<thead>
<tr>
<th>address</th>
<th>town</th>
<th>Manager</th>
</tr>
</thead>
<tbody>
<?php
foreach ($elenco as $riga) {
?>
<tr>
<td> <?= $row->address ?></td>
<td> <?= $row->town ?></td>
<td> <?= $row->name ?> <?= $riga->surname ?> </td>
</tr>
<?php
}
?>
</tbody>
</table>
</tbody>
</table>
<?php
}
?>
</body>
</html>
<?php
function getBuldings() {
global $db;
$sql = "select * from buildings, boss
where boss.codBo=buildings.codBu";
$rows = array();
if (!DB::isError($tab = $db->query($sql))) {
while ($row = $tab->fetchRow(DB_FETCHMODE_OBJECT)) {
$rows[] = $row;
}
} else {
die("ErrorSQL:" . $tab->getMessage());
}
return $rows;
}
?>
Но чтобы он работал в MYSQL я должен был сделать много изменений. На самом деле произошла ошибка в! BD :: isError. Я должен был изменить connection.php в этом одном из
<?php
Session_Start();
require_once("DB.php");
$db = DB::connect("pgsql:etc....");
if (DB::isError($db)) {
die("Error: " . $db->getMessage());
}
?>
к этому
<?php
$servername = "localhost";
$username = "test";
$password = "";
$dbname = "test";
// Create connection
$db = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($db->connect_error) {
die("Connection failed: " . $db->connect_error);
}
$a = mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
echo "Connected successfully " . $a . " ";
?>
Для того, чтобы показать результат запроса мой код стал это:
<body>
<?php
$rows = getBoss();
if (count($rows) == 0) {
print "<h2>No Boss here</h2>";
} else {
foreach ($rows as $row) {
print "<p>" . $row['name'] . "</p>";
print "<p>" . $row['surname'] . "</p>";
}
}
?>
<?php
function getBoss() {
global $db;
$sql = "select *
from test_boss
order by name, surname";
$rows = array();
if ($tab = $db->query($sql)) {
while ($row = $tab->fetch_array()) {
$rows[] = $row;
}
return $elenco;
} else {
die("Errore sql: " . $tab->getMessage() . ":" . $sql);
}
}
?>
</body>
</html>
Что в фактах работает очень хорошо, но мне пришлось сменить FETCH_ROW на FETCH_ARRAY. Я больше не мог использовать метод размещения данных из значения $ rows.
<?= $row->name ?>
Потому что произошла ошибка
Примечание: Попытка получить свойство необъектных
, но я должен был использовать
print "<p>".$row['name']."</p>";
Что я могу сделать для правильного использования метода FETCH_ROW?
Рассмотрите возможность использования PDO, [это делает миграции между базами данных намного проще.] (Http://jayblanchard.net/demystifying_php_pdo.html). –
Почему бы вам просто не позвонить [fetch_object()] (http://php.net/manual/en/mysqli-result.fetch-object.php)? –
@MarcB, используя объект, он принесет мне только объект (столбец) таблицы результатов. Я обычно принимаю несколько объектов для моих допросов. Я редактирую свой вопрос, добавляя еще одну проблему, связанную между собой. – Amicofl