dpdjv9559 2015-07-13 08:51
浏览 93
已采纳

PHP MYSQLI获取错误

At school my teacher told me a lot of thing about coding in PHP using a POSTGRES DATABASE. But when I started to use MYSQLI Server i couldn't do a lot of thing.

First of all the functions. My teacher told me to do this type of function

$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;
}
?>

But to get it working in MYSQL i had to do a lot of changes. In fact there was an error in !BD::isError. I had to change the connection.php in from this one

<?php
Session_Start();
require_once("DB.php");
$db = DB::connect("pgsql:etc....");
if (DB::isError($db)) {
    die("Error: " . $db->getMessage());
}
?>

to this one

<?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 . " ";
?>

In order to show the result of the query my code had become this:

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

That in facts works pretty well, but I had to change FETCH_ROW to FETCH_ARRAY. I could not use anymore the method of posting the data from the $rows value.

<?= $row->name ?>

Because there was an error

Notice: Trying to get property of non-object

but I had to use

print "<p>".$row['name']."</p>";

What can I do in order to use the method FETCH_ROW corretly?

展开全部

  • 写回答

1条回答 默认 最新

  • duaj39673 2015-07-13 08:57
    关注

    You can type cast the array to an object by tweaking the code slight.

    if you want to retrieve an object in form of $row->name then your code will be.

    while ($row= $tab->fetch_array()) {
        $rows[] = (object)$row;
    }
    

    OR

    while ($row= $tab->fetch_object()) {
        $rows[] = $row;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 VAE代码如何画混淆矩阵
  • ¥15 求遗传算法GAMS代码
  • ¥15 雄安新区高光谱数据集的下载网址打不开
  • ¥66 android运行时native和graphics内存详细信息获取
  • ¥100 求一个c#通过CH341读取数据的Demo,能够读取指定地址值的功能
  • ¥15 rk3566 Android11 USB摄像头 微信
  • ¥15 torch框架下的强化学习DQN训练奖励值浮动过低,希望指导如何调整
  • ¥35 西门子博图v16安装密钥提示CryptAcquireContext MS_DEF_PROV Error of containger opening
  • ¥15 mes系统扫码追溯功能
  • ¥40 selenium访问信用中国
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部