无法使用mysqli\u real\u connect进行连接。为什么即使我的PHP代码有任何错误,HTML也不会被解析? 支出记录表 名称 类别 数量 支付方式

无法使用mysqli\u real\u connect进行连接。为什么即使我的PHP代码有任何错误,HTML也不会被解析? 支出记录表 名称 类别 数量 支付方式,php,html,mysql,Php,Html,Mysql,在浏览器中运行文件时,仅构造名称字段。之后,会出现带有选择图标的类别文本,但单击它时不会下拉菜单。页面的其余部分是空白的!!最近开始使用PHP,请帮助 我想知道是否建立了连接。即使没有建立连接,为什么其他HTML元素没有显示在Category字段之后 我检查了我的连接参数。即使他们错了,我也会收到“无法连接”的消息,对吗?如果您打开了错误报告,您可以通过查看服务器日志了解这一点,请查看 另外,看看PHP.net上的文档,它会告诉您首先是连接,然后是查询字符串 您当前使用的是: <?php

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

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


我检查了我的连接参数。即使他们错了,我也会收到“无法连接”的消息,对吗?

如果您打开了
错误报告
,您可以通过查看服务器日志了解这一点,请查看

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

您当前使用的是:

<?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>
虽然它应该是

$result = mysqli_query($query, $db)
为了回答您的问题,是的,如果无法连接,您将得到无法连接(错误参数)

您也不需要在
while
-循环中使用
foreach
-循环

$result = mysqli_query($db, $query)
while($row=mysqli\u fetch\u assoc($result)){
foreach(行作为$value){
回声';
echo$row['cat_name'].';
}
}
上述代码应改为:

while($row = mysqli_fetch_assoc($result)) {
        foreach ($row as $value) {
            echo '<option value="' . $row['cat_id'] . '">';
            echo $row['cat_name'] . '</option>';
        }
}
while($row=mysqli\u fetch\u assoc($result)){
回声';
echo$row['cat_name'].';
}

是,这是密码。有错吗?谢谢你,奇雷尔。我刚刚用mysql\u connect替换了mysql\u real\u connect,并纠正了您提到的mysqli\u查询。它成功了。有人怀疑mysqli_connect和mysqli_real_connect之间到底有什么区别?PHP文档说,mysqli_real_connect要求在连接之前执行mysqli_init(),mysqli_real_connect()中需要一个mysqli变量作为参数。但是,执行这两个步骤的目的到底是什么?是的,当使用
real\u connect
时,必须将MySQLi对象作为参数一(MySQLi\u init)。但是您还有一个
标志
参数(第8个),您可以使用
mysqli\u options()
(不能使用
mysql\u connect
)。但是对于正常的连接,这真的不值得费心。我还注意到您有
mysqli_select_db($link,'expense_report')在您的代码中。它应该是
$db
,而不是当前代码中的
$link
,只是一条注释。提示:使用if语句而不是
die
检查连接、查询等是否返回true。
while($row = mysqli_fetch_assoc($result)) {
    echo '<option value="' . $row['cat_id'] . '">';
    echo $row['cat_name'] . '</option>';
}