我正在向前道歉,这是我的第一个问题,我还是学生。
没时间浪费。
我正在创建一个网站,您可以在其中选择CPU,主板,内存和其他计算机部件,并通过电子邮件发送或打印出来或生成您和您的构建所特有的代码,因此构建存储在代码中。这一切都会在以后发生。
我的问题是,数据库中的表中列出的计算机部件不会在框(或下拉框)中加载,因为使用PHP从数据库生成它。我已经在Stackoverflow上搜索了很多问题和答案,但无济于事,我想要自杀(不是真的,我根本不是自杀,这是一种比喻)
这是我得到的。然后我将解释所有出现的问题。
的index.php
<?php
include_once 'func.inc.php';
connectDB();
testDB();
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>PC Builder</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body background="background.jpg">
<header>
<h1>PC Builder</h1>
</header>
<section>
<table>
<tr>
<td class="titlecolomn">CPU</td>
<td><?php queryCPU(); ?></td>
</tr>
</table>
</section>
</body>
</html>
<?php closeDB(); ?>
func.inc.php
<?php
include_once 'db.inc.php';
function connectDB(){
$conn = new mysqli($servername, $username, $password, $dbname);
}
function testDB(){
if ($conn->connect_error) {
die("Debug: Connection Failed: " . $conn->connect_error);
}
echo "Debug: Connection Successful.";
}
function closeDB(){
mysqli_close();
}
function queryCPU(){
$queryCPU = "SELECT * FROM CPU";
$db = mysqli_query($db, $queryCPU);
echo '<select name="selectCPU">';
echo '<option value = "SelectCPU"> Select CPU </option>';
while ( $db=mysqli_fetch_assoc($db)) {
echo '<option value="{'.$db[ID].'}">'.$db[Name].'</option>';
}
echo '</select>';
}
db.inc.php
<?php
$servername = "localhost";
$username = "theUsername";
$password = "thePassword";
$dbname = "tableName";
?>
MySQL数据库结构。
WebsiteName_PCBuilder
以下是问题。
ConnectDB();
调试:连接成功。
<Select> </Select>
中没有任何内容,但是
'<option value = "SelectCPU"> Select CPU </option>'
。此外,如果您知道更好或替代方法,请推荐它。如果可以的话,我可以灵活地改变整个事物。
这是网站。 http://pcbuilder.tariqsendi.ml/ 在上面提供的代码中,我剪掉了不重要的部分。 忽略主域名。
提前感谢你。
答案 0 :(得分:1)
那是因为你覆盖了相同的var。 变化
while ( $db=mysqli_fetch_assoc($db)) {
echo '<option value="{'.$db[ID].'}">'.$db[Name].'</option>';
}
使用
while ($row = mysqli_fetch_assoc($db)) {
echo '<option value="{'.$row['ID'].'}">'.$row['Name'].'</option>';
}
答案 1 :(得分:0)
while ( $row=mysqli_fetch_assoc($db)) {
echo '<option value="'.$row['ID'].'>'.$row['Name'].'</option>';
}