无法使用mysqli_real_connect连接.为什么HTML不被解析,即使有任何错误与我的PHP代码


Unable to connect using mysqli_real_connect. And why is HTML not being parsed even if any error with my PHP code?

<?php
$link = mysqli_init();
$db = mysqli_real_connect($link, 'localhost', 'bp6am', 'bp6ampass', 'expense_report') or 
    die('Unable to connect');
mysqli_select_db($link, 'expense_report');
?>
<html>
<head>
<title>Expenditure Log Form</title>
</head>
<body>
<form action="commit.php" method="post">
<table>
<tr>
<td>Name</td>
<td><input type="text" name="name"/><br></td>
</tr>
<tr>
<td>Category</td>
<td><select name="category">
<?php 
//get the expenses categories
$query = 'SELECT cat_id, cat_name
            FROM exp_category
            ORDER BY cat_name';
        $result = mysqli_query($query, $db) or
            die(mysqli_connect_error($db));
//populate the dropdown menu for expenses category
while($row = mysqli_fetch_assoc($result)) {
        foreach ($row as $value) {
            echo '<option value="' . $row['cat_id'] . '">';
            echo $row['cat_name'] . '</option>';
        }
}
?>
</select></td>      
</tr>
<tr>
<td>Amount</td>
<td><input type="text" name="amount"/></td>
</tr>
<tr>
<td>Payment Mode</td>
<td><select name="payment">
<?php
//retrieve and populate
$query = 'SELECT pay_id, pay_type
            FROM pay_mode
                ORDER BY pay_id';
        $result = mysqli_query($query, $db) or
            die(mysqli_connect_error($db));
//populate
while($row = mysqli_fetch_assoc($result)) {
        foreach ($row as $value) {
            echo '<option value="' . $row['pay_id'] . '">';
            echo $row['pay_type'] . '</option>';
        }
}
?>
</select></td>
</tr>
</table>
</form>
</body>
</html>

当我在浏览器中运行文件时,只构造Name字段。之后是带有选择图标的类别文本,但单击它时没有下拉菜单。页面的其余部分是空白的!!最近开始使用PHP请帮助。

我想知道连接是否建立。即使没有建立连接,为什么在Category字段之后没有显示其他HTML元素?

我检查了连接参数。即使他们错了,我应该得到"无法连接"的消息,对吗?

如果您已经打开了error_reporting,您将从查看服务器日志中了解这一点,请查看如何在PHP (StackOverflow)中获得有用的错误消息。

另外,看一下PHP.net上的mysqli_query文档,它会告诉你首先是连接,然后是查询字符串。

您当前使用的是:

$result = mysqli_query($query, $db)

而应该是

$result = mysqli_query($db, $query)

和回答你的问题,是的,你会得到一个无法连接如果它不能连接(错误的参数)。

在您的while -loop中也不需要foreach -loop。

while($row = mysqli_fetch_assoc($result)) {
        foreach ($row as $value) {
            echo '<option value="' . $row['cat_id'] . '">';
            echo $row['cat_name'] . '</option>';
        }
}

上面的代码应该是:

while($row = mysqli_fetch_assoc($result)) {
    echo '<option value="' . $row['cat_id'] . '">';
    echo $row['cat_name'] . '</option>';
}
相关文章: